Какое лучшее веб-картографическое решение с открытым исходным кодом для обработки более 3000 полигонов [закрыто]


12

У меня более 3000 полигонов, которые представляют водоразделы (18 основных водосборов). На первом этапе будут показаны все 18 водоразделов, а их список будет размещен на левой боковой панели. Если какой-либо пользователь наведет курсор мыши на карту, всплывающее окно покажет название водораздела. Если пользователь щелкнет по любому значительному водоразделу на карте, откроется всплывающее окно с подробной информацией. При большем увеличении все водоразделы будут отображаться.

Я прошу вашего совета, какое решение с открытым исходным кодом лучше всего подходит для обработки такого большого количества полигонов?

Я думал о Leaflet или OpenLayers, но я не знаю, могут ли они обрабатывать большое количество полигонов.

Кроме того, вы предлагаете хранить их в MySQL или?


3
Можете ли вы растеризовать эти полигоны? или, возможно, использовать сервер объектов, такой как геосервер или сервер функций?
Дассуки

Ответы:


12

Я хотел бы создать сервис изображений (растровый слой) и предоставить его через Web Map Service (WMS) . Таким образом, вы можете использовать любой API-интерфейс, который вам удобен, если он поддерживает WMS ( OpenLayers делает ). Вы можете использовать WMS, чтобы отобразить слой всех объектов многоугольника, а затем нажать WF GetFeatureInfo, чтобы получить информацию об этом многоугольнике.

Если по какой-либо причине вам нужны векторные данные на карте, вы можете создать их динамически по клику с данными ответа GetFeatureInfo.


5

См TileMill , который может растеризацию UTFGrid взаимодействия в MBTiles файл и размещать его на MapBox или с открытым исходным кодом реализацию MBTiles сервера , как TileStache .

Вот это с большим количеством полигонов . Этот подход требует от вас растеризации - иначе говоря, bake - плиток, но, по сути, это единственный способ сделать то, что вы хотите, без огромных ресурсов сервера, специального приложения или очень ограниченного набора браузеров.


Мне нравится этот пример. Можете ли вы сказать мне, как я могу растеризовать шейп-файлы? В TileMill? Благодарю.
против потока

Да, это самый распространенный способ. Вот документация по добавлению подсказок таким образом . Если у вас супер-аллергия на инструменты с графическим интерфейсом и на Python / Mapnik pro, есть также такой путь, который избегает всего этого, но немного загадочен.
tmcw

2

Зависимость от масштаба и пространственно индексированная база данных будут ключевыми в этой проблеме. Вы должны быть в состоянии представить водоразделы, используя как минимум два, возможно, три или четыре уровня. Например, вы можете разделить данные на Major (18), Minor (некоторая комбинация всех водосборов среднего масштаба, которые попадают в один и тот же Major) и третичный (3000 полигонов). Это даст вам три разных векторных слоя / услуги.

Используйте зависимость от масштаба, чтобы нарисовать только соответствующий сервис в зависимости от уровня масштабирования пользователя.

Используйте базу данных с пространственной индексацией, чтобы обеспечить быстрое рисование сервисов, и рисуйте только ту часть, которая необходима для заполнения текущего окна просмотра.

В качестве альтернативы, вы можете подумать о создании тайлов карт водораздела (опять же, созданных на основе соответствующих масштабов для каждого слоя) и обслуживать их таким образом.

На этом сайте уже существует множество вопросов, которые рекомендуют соответствующие решения с открытым исходным кодом для использования этих стратегий.


0

В дополнение к TileMill вы можете проверить MangoMap , он не с открытым исходным кодом, но в настоящее время он бесплатный и способен обрабатывать данные такого типа.

[Отказ от ответственности: я работаю с MangoMap, но отвечаю, потому что это уместно в этом случае]

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.