Предполагается, что я снова задам этот вопрос, но, возможно, сформулирован иначе, чем массовая загрузка нескольких шейп-файлов в PostGIS .
Я новичок в Postgis и SQL, но я хочу использовать Postgis в качестве раба (в настоящее время) для ArcSDE. Поэтому мне нужна некоторая помощь в том, чтобы понять, как я могу выполнять пакетную загрузку данных ArcSDE в PostGIS каждую ночь.
Я могу создать скрипт Python для экспорта данных ArcSDE в SHP по ночам, но тогда я не уверен, как затем пакетно выгрузить экспортированные файлы SHP в PostGIS, перезаписав те, что уже существовали в Postgis, как автоматическую задачу (я полагаю, пакетный файл). ).
Мой грандиозный план - вовремя заменить ArcSDE / ArcGIS на PostGIS, QGIS и GeoServer или MapServer.
postgis
enterprise-geodatabase
geosmiles
источник
источник
Ответы:
Вместо того чтобы выполнять преобразование DB -> file -> DB, где Esri Shapefiles является компонентом-посредником, основанным на файлах, возможно, стоит изучить более прямую передачу DB -> DB. Есть несколько инструментов, которые могут сделать это, но я сосредоточен только на инструментах GDAL / OGR с открытым исходным кодом .
Предполагая, что у вас есть Windows Server, вы можете легко установить GDAL / OGR с помощью OSGeo4W . В режиме расширенной установки у вас есть возможность выбрать пользовательские конфигурации пакетов, например драйвер SDE (см. Этот список пакетов, чтобы убедиться, что существует подходящее соответствие для вашей версии SDE - поддерживаются только версии SDE 9.0–9.2). Эти пакеты являются только заголовками и оболочками и требуют, чтобы вы установили библиотеки SDE, которые вы должны иметь на CD / DVD-ROM, и убедитесь, что переменные PATH установлены соответствующим образом, чтобы GDAL / OGR мог их найти. Успешная установка покажет «SDE» где-нибудь с помощью следующей команды в оболочке OSGeo4W:
ogr2ogr --formats
После настройки GDAL / OGR вы можете использовать несколько инструментов:
ogr2ogr -f "PostgreSQL" PG:"host=localhost user=someuser dbname=somedb password=somepassword port=5432" \ SDE:server,instance,database,username,password,layer,[version]
(вы также можете исследовать различные-append
,-overwrite
или-update
варианты)Основным недостатком этого метода является то, что его сложно настроить.
источник
shp2pgsql
,psql
и т.д.PostGIS имеет загрузчик с именем shp2pgsql , который можно использовать для загрузки шейп-файлов в базу данных PostGIS. Один из его параметров ("-d") удаляет существующую таблицу базы данных перед загрузкой данных. Должно быть довольно просто создать пакетный файл или скрипт, который может перебирать все шейп-файлы и загружать их для вас.
Если вы хотите узнать больше об этом, вы можете установить GDAL и использовать инструменты OGR (которые имеют разъем ArcSDE) и пропустить экспорт shapefile. Информацию о разъеме ArcSDE можно найти здесь .
источник
Я знаю, что опаздываю на вечеринку, но есть еще один вариант, который позволяет избежать двух баз данных.
Вы можете использовать ArcSDE поверх Postgresql + Postgis. Это был бы твой хозяин и только дб.
ArcSDE может быть настроен для использования геометрии postgis, а не st_geometries (ESRI проприетарно).
Это означает, что вы можете использовать любой инструмент postgis для непосредственного использования загруженных / отредактированных пространственных таблиц ArcSDE, поскольку они на самом деле являются собственными таблицами postgis.
Например, вы можете использовать qgis для прямого подключения к базе данных postgis и чтения тех же данных, что и arcgis, через arcsde.
источник
Другой подход заключается в использовании пространственного ETL, такого как Geokettle (с открытым исходным кодом).
http://www.spatialytics.org/projects/geokettle/
Я использую Geokettle для перемещения данных между SQL Server и PostGIS все время. Однако, хотя он хорошо работает с PostGIS, при работе с пространственным типом данных SQL Server возникают проблемы (см. Советы ниже). Кроме того, это предполагает, что вы сохраняете геометрию SDE как собственный пространственный тип данных SQL Server. Вы можете сделать это с помощью ключевого слова Geometry при загрузке данных через ArcCatalog.
Подсказка 1: при выборе данных с сервера sql примените .STAsText () к полю геометрии, иначе Geokettle захлебнется типом данных сервера sql.
Подсказка 2: при вставке данных на сервер SQL вы должны будете вставить геометрию в виде текста в текстовое поле. Затем с помощью шага sql добавьте новый столбец геометрии (при необходимости) и заполните его из геометрии текста. Таким образом, вы используете SQL Server для построения геометрии из стандартного текстового представления геометрии OGC.
Совет 3: Обязательно зарегистрируйте вашу новую пространственную таблицу в SDE.
источник
Подумайте о настройке репликации базы данных на 9,3 дБ.
Он не работает так же хорошо, как новые 10, но ...
реплицирует это на другой sde в postgresql, используя тип данных postgis pg_geometry.
Вот некоторая справка esri
ПРИМЕЧАНИЕ. Для этого потребуются дубликаты лицензий, если обе базы данных находятся не на одной машине.
источник
Вы можете написать ArcObjects для:
А) сбросить вашу базу данных arcsde; B) Простой код C # для генерации shp2pgsql sqls; C) Простой код C # для сброса старых таблиц; D) Обычный c #, чтобы выполнить все shp2pgsql в вашем postgresql;
Для этого вы можете использовать драйвер npgsql, выполняя функции и операторы sql непосредственно в вашей базе данных postgis;
источник
Какова ваша геометрия ArcSDE ( хранилище базы геоданных в реляционных базах данных )? В таком сценарии вы можете рассмотреть возможность использования типа ST_Geometry и затем использовать инструменты репликации PostGre / PostGIS ( PostGIS Replication @ FOSS4G ). Эта схема может иметь преимущество в использовании возможностей ArcSDE / ArcGIS / базы геоданных для редакции (база данных редакции) и инструментов с открытым исходным кодом для распространения (реплицированная база данных диффузии).
источник