The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Выпуск GIS-движка Turf, написанного на JavaScript

25.12.2014 09:22

Доступен первый публичный выпуск модульного ГИС-движка Turf, написанного на языке JavaScript и пригодного для использования в браузерных web-приложениях и серверных программах на базе Node.JS. Обработка геопространственных данных осуществляется с использованием формата GeoJSON. Код проекта распространяется под лицензией MIT.

Для Turf подготовлена большая подборка модулей c реализацией средств для расчёта вхождения точек в области, пересечения областей, вычисления расстояний между объектами, определения площади и размера объектов, нахождения оптимальных путей, фильтрации данных, работы с различными геометрическими объектами, решения задач по интерполяции, преобразованию и классификации.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Создан TangoGIS - русский форк просмотрщика карт TangoGPS
  3. OpenNews: Релиз свободной геоинформационной системы QGIS 1.7
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/41339-gis
Ключевые слова: gis
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (29) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Прохожий (??), 10:07, 25/12/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Может, вот оно будущее?! JS - "цветет" и "пахнет"!
     
     
  • 2.3, Аноним (-), 11:44, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Системы контроля за транспортом по GPS модулям давно и плотно сидят на node.js. Участвовал в проекте для конторы с парком в десятки тысяч машин, забавно было в секунду принимать сотни тысяч UDP пакетов, парсить их и писать в базу. Языки с блокировкой I/O захлебнулась бы, а тут на простеньком по нынешнем временам однопроцессорном сервере все стабильно работало.
     
     
  • 3.4, cmp (ok), 13:31, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > секунду принимать сотни тысяч UDP пакетов

    правда? на ноджс? прям сто тыщ?

     
     
  • 4.5, Аноним (-), 13:42, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А почему нет? Позже добавили еще серверов и сделали кластеризацию. Можете посмотреть вакансии для таких проектов по миру, везде требуют знание node.js
     
     
  • 5.26, cmp (ok), 05:29, 26/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А какая бд? я давненько ищу что-нить под похожую задачу, но что-то все не то, ноджс давненько ковырял, на тот момент он мне не понравился.
     
     
  • 6.27, Аноним (-), 13:56, 26/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    MongoDB
     
     
  • 7.28, cmp (ok), 18:07, 27/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    мда, почему-то так и думал.
     
  • 4.9, Будочки (?), 14:26, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Просто парсить и просто класть в базу. И то наверно не напрямую. Тут да, JS даже не тормозит.

     
     
  • 5.10, Аноним (-), 14:31, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Парсится побитово благодаря модулю Buffer, в чистом JS его нет, но есть в node. И, да, не тормозит.
     
     
  • 6.24, Anoo (?), 01:38, 26/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я подобное делал на чистом си и epoll.
    Совершенно не тормозило на обычной машине, не сервере.
     
  • 3.6, rshadow (ok), 13:46, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Асинхронники вещь давно известная, нода тут не при чем, важна сама технология. А использовать ее можно на любом языке. Может и не напрямую, а с помощью очередей и воркеров, но можно.
     
     
  • 4.8, Аноним (-), 14:13, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это понятно, что можно, async модули есть к большинству языков, но в node это есть "из коробки", достаточно гибко и быстро. Плюс node обслуживает множество коннектов не хуже nginx, были сравнения.
     
     
  • 5.11, remal (??), 14:36, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • –2 +/
    curl -I nodejs.org
    HTTP/1.1 200 OK
    Server: nginx
    Date: Thu, 25 Dec 2014 11:35:26 GMT
    Content-Type: text/html
    Content-Length: 6021
    Last-Modified: Wed, 24 Dec 2014 01:35:16 GMT
    Connection: keep-alive
    Accept-Ranges: bytes
     
     
  • 6.13, Аноним (-), 14:52, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    И? Какое отношение html/статик-контент имеет к обсуждаемой теме?
     
     
  • 7.14, Crazy Alex (ok), 16:13, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    К теме - никакого. К тому, что "node обслуживает множество коннектов не хуже nginx" - есть некоторое отношение, я полагаю.
     
     
  • 8.16, Аноним (-), 16:27, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Nginx там в роли прокси, для обслуживания кластера ... текст свёрнут, показать
     
     
  • 9.19, Аноним (-), 18:08, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Так если ноджс не хуже - не понятно зачем там нжинкс ... текст свёрнут, показать
     
     
  • 10.21, Аноним (-), 18:36, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Кто-то же должен проксировать входящие соединения У каждого воркера в кластере ... текст свёрнут, показать
     
  • 5.15, rshadow (ok), 16:15, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    > но в node это есть "из коробки"

    С одной стороны да, с другой: в языках это уже давно есть. К тому же коллбечные асинхронники тоже прошлый век. Есть короутины.

     
     
  • 6.17, Аноним (-), 16:28, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    А в node есть промисы/деферы. Кому что удобней.
     
  • 3.12, Аноним (-), 14:36, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Языки с блокировкой I/O захлебнулась бы, ...

    не путайте язык с api.
    на всех разумных языках - на тех же сях, например, - всегда была возможность работы с функционалами.
    в сях это указатель на функцию.
    единственно что лямда-функции поддерживаются не везде и тогда приходится выдумывать им имена.
    и второе единственное - для использования функционалов в структурах бывает нужно точно определять тип функций.
    в сях, напр., так:
        typedef int (*our_fn_t)(int, char*, void*);
    -- для использования в структурах в виде
        our_fn_t *fn;
    привсоение значения в виде
        obj.fn = &some_function;
    если int some_function (int a, char *s, void *p) { ... },
    и вызов в виде
        (*obj.fn)(args);
    асинхронность в таком случае реализуется передачей функции, осуществляющей что-то асинхронное, указателя на функцию или структуру с укзателем на функцию.
    после завершения чего-то асинхронного функция вызовет функцию-обработчик, переданную в аргументах.

     
     
  • 4.18, Kamiram (?), 17:22, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    с калбэками все же максимально неудобно.
    в сях есть брутальные полноценные корутины.
     
  • 3.25, Anoo (?), 01:55, 26/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > забавно было в секунду принимать сотни тысяч UDP

    Не верю!
    GPS-трекеры дают очень мало данных, типовой случай - в пути на каждые 200 м., при повороте на > 5 гр., тревогах.
    На стоянке через 1-5 минут.
    Конечно зависит от настроек, но порядок понятен, полагаю.
    Ограничениями скорее служат тарифы сотовых операторов, на gprs разориться можно.
    Так что с десятка тысяч машин придет разве что тысяча пакетов в секунду в худшем случае - все в рейсе, едут и т.д.
    Чего никогда не бывает.
    + почти все трекеры могут группировать неск. сообщений в один пакет, покрытие не везде, сбрасывают данные при появлении связи.

    > добавили еще серверов и сделали кластеризацию

    ИМХО - показатель неэффективности ноды.
    Для такой нагрузки достаточно обычной машины (plain c + epoll)

     
  • 2.20, Аноним (-), 18:20, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +1 +/
    не может быть чтоб скриптовой язык нацеленный на исполнение в спец среде был быстрее компилируемых языков. да может быть удобен в коротких вызовах программ или узкоспецифичных вещах, но никак не как самостоятельный языкдля написания программ. помойму это должно быть ясно всем. как говорится можно и тупым ножом резать хлеб, но разница в усилиях будет очевидна. так и тут.
     
     
  • 3.22, Аноним (-), 18:37, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Никто и не говорит о (прикладных) программах, тут имеется ввиду серверное применение.
     
  • 3.23, Crazy Alex (ok), 23:37, 25/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    Угу, всем понятно. Но... у скольки процентов острые ножи?
     
  • 3.29, Аноним (-), 17:35, 28/12/2014 [^] [^^] [^^^] [ответить]  
  • +/
    по факту - может.
    пример - Форт.
    а вообще под сабж на чем только не писали. экзотика с модулой-2, Адой или Обероном - смотрится вызывающе. жаба с ноде.жс - тоже не так чтобы мизерно по оверхэду.
     

  • 1.2, Аноним (-), 11:33, 25/12/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вопрос не совсем по сабжу, может кто подскажет хорошую биюлиотеку/фреймворк/движок для GIS-запросов к БД(ОРМ), манипуляцию с конвертацией различных форматов GIS для Golang?
     
  • 1.7, xupypr (??), 13:50, 25/12/2014 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    По моему до leafletjs ему еще далеко...
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2020 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру