Наша организация рассматривает возможность переноса нашего процесса геообработки в PostGIS. В настоящее время мы используем ArcGIS с множеством пользовательских инструментов Python, используемых в ModelBuilder. Мы перемещаем большую часть наших данных в PostGIS для использования различными приложениями, и теперь мы спрашиваем, имеет ли смысл также выполнять обработку данных там же.
Мы обрабатываем данные для совместимости с нашим программным обеспечением. Клиент покупает наше программное обеспечение, передает нам свои данные, и мы обрабатываем их, чтобы оптимизировать их для использования в нашем программном обеспечении. Это требует от нас создания различных инструментов для обработки различных качеств входных данных. Мы не можем ожидать получения данных в определенном формате или схеме, поэтому мы создаем инструменты для сопоставления входных полей с выходными полями, разбора отдельных полей на несколько полей, объединения нескольких наборов данных и т. Д. Мы также выполняем пространственные объединения, пересечения, обрезку пробелов. и объединять поля и многие другие общие операции. PostGIS, по-видимому, вполне способен выполнить все наши потребности в обработке.
Для тех из вас, кто использует PostGIS для обработки данных, есть ли у вас какие-либо рекомендации по организации, инструментам и т. Д.?
- Вы используете его в сочетании с обработкой Python QGIS?
- люди используют Python ORM для не веб-обработки? Я склонялся к использованию GeoDjango, так как он имеет Python ORM для PostGIS. Наш первоначальный тест использования PostGIS для обработки данных содержит много больших текстовых блоков SQL в коде Python, и мы думаем, что GeoDjango ORM может помочь в создании более управляемого и читаемого кода. Также есть ORM GeoAlchemy, который аналогичным образом взаимодействует с PostGIS и, по-видимому, не настолько специфичен для сети, как Django.
Я не слышал о людях, использующих PostGIS для геообработки, так много, как я вижу людей, использующих QGIS или ArcGIS, поэтому я хочу знать, является ли это сопоставимой альтернативой.
источник
Ответы:
Мне действительно нравится использовать PostGIS для целей геообработки.
Мои два главных человека:
1) Зачастую сложные задачи в базе данных выполняются намного быстрее, потому что вы получаете помощь планировщика запросов для выполнения действий в правильном порядке.
2) Просто сохраните строки sql, которые вы использовали в текстовом файле, и у вас будет очень хорошая документация о том, что вы сделали.
Мой рабочий процесс, если задачи включают в себя много «шагов», используются для того, чтобы быть чем-то вроде:
1- Построить части запроса или все в зависимости от характера задачи.
2- Тестировать запрос на небольшой части набора данных, чтобы Посмотрите, как он работает.
3. Сделайте некоторую подстройку, если необходимо.
4. Запустите запрос ко всему набору данных.
5. Сохраните строки в текстовом файле с некоторыми примечаниями.
Все это часто происходит так же быстро, как запуск ArcGIS и ожидание лицензии на сервере лицензий.
источник
Мы используем PostGIS и некоторую среду программирования Python для разработанных нами веб-сервисов геообработки ряда продуктов; нет претензий!
GeoDjango - отличный выбор, если вы работаете в основном (или исключительно) с функциями веб-приложения. Он не поддерживает тип растровых данных PostGIS Raster или PostGIS 2.0. Сейчас он изначально поставляется с последней версией Django. Вы можете восполнить недостаток растровой поддержки и общей надежности, используя пользовательские необработанные SQL-запросы в Django.
Для более надежных приложений геообработки, особенно если вы хотите использовать объектно-реляционную модель, попробуйте GeoAlchemy2. Оригинальная библиотека GeoAlchemy, которая расширяет SQLAlchemy, обеспечивает поддержку данных объектов; GeoAlchemy2 расширяет его , предоставляя (ограниченную) поддержку нового типа растровых данных в PostGIS 2.0.
Кроме того, всегда есть привязки Python для GDAL и OGR!
источник
Хотя это и возможно, трудно представить, что вы захотите выполнить много геообработки внутри механизма базы данных или веб-фреймворка. Я рекомендую вам взглянуть на базовые библиотеки кода - geos, proj.4 и gdal. Есть привязки Python или библиотеки для всех трех. Другой вариант - подключаемый модуль геообработки Sextante для QGIS, поскольку он позволяет строить модель / рабочий процесс.
Некоторые другие мысли:
Не исключаю использование PostGIS. Он обеспечивает хорошие возможности хранения и сервера, а также предоставляет некоторые функции geos и proj.4 через SQL. Он также хорошо работает с другими упомянутыми инструментами: Django, QGIS и Python.
Помимо возможного использования вышеупомянутого плагина Sextante, QGIS хорош для визуализации, имеет несколько инструментов для работы с postgres, а также включает консоль Python.
Если вы ищете ORM и хотите веб-интерфейс, Django сделает это. Если вы не возражаете против менее сексуального интерфейса, страницы администратора предоставят вам интерфейс CRUD с относительно небольшими усилиями - даже редактирование геометрии, если вы используете GeoDjango.
источник
Взгляните на ETL , в частности, FME для пространственных операций (или GeoKettle с открытым исходным кодом ).
Мне действительно нравится использовать FME, так как он создает визуальный рабочий процесс, и вы можете отделить логику для пространственных операций, объединений, слияний ... всего, и вы можете работать с не-форматами баз данных и различными базами данных ... Вы можете Делать много и легко, и быстро. Если у вас есть опыт работы с конструктором моделей, вы быстро его освоите, к тому же в Интернете много документации.
Единственный недостаток предприятия состоит в том, что он стоит денег. Но я думаю, это того стоит.
Альтернативой использованию FME, вероятно, являются GDAL и OGR, а также, возможно, Python, чтобы связать их вместе. Или, как вы говорите, делаете все это в PostgreSQL. Я думаю, что ETL играет важную роль в распределении пространственных данных, и он делает многое, чего нельзя сделать только в своей базе данных.
Я не использовал его, но GeoServer предоставляет реализацию WPS , я не использовал это, но другие могут прокомментировать, как это может быть полезно для вас?
Я не могу комментировать использование GeoDjango, но я подумал, что это скорее CMS, как интерфейс для просмотра данных.
источник