Какой самый быстрый (с точки зрения производительности) способ использования функций PostGIS?


12

Мне интересен самый быстрый способ обслуживания функций PostGIS. Я могу найти несколько улучшений и альтернатив WMS (MapProxy, TileCache, Mapnik ...), но не так много улучшений и альтернатив WFS с открытым исходным кодом. Меня интересуют не плитки, а полигоны поверх базового слоя. Подается быстро.

Не могли бы вы, пожалуйста, указать мне правильное направление?


Обновить:

Я забыл упомянуть, что мое приложение показывает кадастровую информацию. И кадастровые полигоны должны быть выбираемыми (не редактируемыми, они выделяются только при нажатии на них).

Сейчас я использую смесь WMS + Django, генерирующую объекты GeoJSON, когда пользователь нажимает на часть карты, чтобы избежать ситуаций, подобных тысячам полигонов одновременно в клиенте (OpenLayers).

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


1
Какое оборудование у вас есть?
Mapperz

Ubuntu 10.04 32 бит 512 МБ ОЗУ, работающий под сервером VMWare. Это машина для разработки, но у меня пока нет доступа к другой. Здесь должно работать достаточно хорошо (обязательно)
Хорхе Аревало

Ответы:


6

Как насчет упрощения геометрии?

http://www.bostongis.com/postgis_simplify.snippet

/programming/1849928/how-to-intelligently-degrade-or-smooth-gis-data-simplifying-polygons

Или, может быть, сочетание WFS, WFS с упрощенными функциями и WMS?


Звучит хорошо. Прямо сейчас я рендерил опросы и обслуживаю их через WMS. Я думаю, что клиент не будет обрабатывать миллионы полигонов одновременно, но я могу ошибаться ...
Хорхе Аревало

6

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

Также убедитесь, что сервер сжимает выходные данные, только если ваш клиент может эффективно распаковать их.

Наконец-то я услышал хорошие вещи о крошечных OWS с точки зрения скорости.


Я слышал о крошечных OWS, но никогда не использовал его. Спасибо за предложение!
Хорхе Аревало

6

Кэширование WFS может удовлетворить ваши потребности. Насколько я знаю, есть два решения с открытым исходным кодом, обеспечивающие кэширование WFS: TileStache и GeoWebCache .

На домашней странице TileStache, в разделе возможностей, говорится: «Создает векторные плитки из источников данных OGR в GeoJSON, которые можно использовать в Polymaps».

GeoWebCache имеет некоторые возможности кеширования WFS начиная с версии 1.1.0 (текущая версия 1.2.6):

GeoWebCache 1.1.0 (наконец-то) выпущен

...

1.c Базовое кэширование WFS GeoWebCache 1.1.0 поддерживает базовое кэширование WFS. Результаты запросов хранятся на диске, в настоящее время нет функций для их проверки или программного удаления. Алгоритм основан на вычисленных хешах и не проверяет уникальность, поэтому существует вероятность возникновения коллизий. Мотивация для этой разработки - формат вывода SHP-ZIP (zip-файл формы) в GeoServer. Эти файлы могут быть огромными и чрезвычайно дорогими для вычисления. Эта служба WFS в своем текущем состоянии не предназначена для использования в более сложных случаях.

http://old.nabble.com/GeoWebCache-1.1.0-(finally)-released-td22870524.html

К сожалению, я никогда не работал ни с TileStache, ни с GeoWebCache, поэтому не могу поделиться каким-либо опытом в отношении кеширования WFS.


Благодарю. Я рассматриваю 2 варианта: визуализировать свои полигоны и обслуживать их через кеш WMS + (их миллионы, может быть, слишком много для клиента ...) или пытаться обслуживать мои полигоны через кеш WFS +. Я работаю с первым вариантом прямо сейчас.
Хорхе Аревало

1
Я рекомендую первый вариант (рендеринг WMS на стороне сервера + кэш). Опция WFS подразумевает, что рендеринг будет выполняться на стороне клиента. По моему опыту, это проблема для пользователей, имеющих старые веб-браузеры или компьютеры, переменная, которой вы не можете управлять.
Дарьяпра

3

Я разрабатываю большую веб-страницу, работаю с большим количеством данных (около 700 000 объектов на слой). Единственное решение - это то, что вы делаете, WMS для рендеринга функций и WFS для получения информации о функциях. Что я делаю (с хорошей производительностью) это:

  • Geoserver (с собственной библиотекой JAI )
  • Когда пользователь нажимает на карту, wms getfeatureinfo используется для получения информации (как формы, так и данных) о выбранной функции (здесь вы должны реализовать некоторую функцию фильтрации, если у вас есть перекрывающиеся функции)
  • Результат getFeatureInfo добавляется как функция на другой слой для имитации «выделения выделения»

Благодарность! Проект был окончательно отменен, но я думаю, что ваше решение хорошее.
Хорхе Аревало

1

Твердотельный сервер DRAM

http://en.wikipedia.org/wiki/Solid-state_drive#DRAM-based

«Спрос на биты DRAM со стороны серверного сектора вырастет на 93,7% в годовом исчислении во второй половине 2011 года»

источник: http://www.digitimes.com/Reports/Report.asp?datePublish=2011/08/16&pages=PD&seq=206


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