ArcSDE에서 PostGIS로 데이터를 마이그레이션 하시겠습니까?


19

이 질문을 다시 묻는 것이 제안되었지만 PostGIS에 여러 모양 파일대량로드 하는 방법과 다른 단어 일 수 있습니다.

postgis와 sql을 처음 사용하지만 postgis를 ArcSDE의 슬레이브로 사용하고 싶습니다. 따라서 내가 따르는 것은 ArcSDE 데이터를 매일 밤 PostGIS에 일괄 업로드하는 방법을 깨우는 데 도움이됩니다.

PythonS 스크립트를 생성하여 ArcSDE 데이터를 SHP로 야간에 내보낼 수는 있지만 내 보낸 SHP 파일을 PostGIS에 일괄 업로드하여 postgis에 이미 존재하는 파일을 모두 자동 작업으로 덮어 쓰는 방법을 모르겠습니다 (일괄 파일 ).

제 계획은 ArcSDE / ArcGIS를 PostGIS, QGIS 및 GeoServer 또는 MapServer로 적시에 대체하는 것입니다.


1
ArcSDE는 RDBMS 데이터 스토어를 관리하지 않습니까? 지금 당신의 데이터는 무엇입니까?
Sean

1
어떤 버전의 ArcSDE를 사용하고 있습니까? -ArcSDE 10은 Postgres에 쓸 수 있습니다. resources.arcgis.com/content/arcsde/10.0/…
Mapperz

Med의 질문을주의 깊게 읽으면 ArcSDE에서 성공적으로 전환 할 수있을 때까지 테스트 및 웹 게시 목적으로 PostGIS에 데이터를 복제하려고 시도하는 것 같습니다. 따라서 요점은 ArSDE를 장기적으로 네이티브 PostGIS와 동기화하는 것이 아니라 단기적으로 동기화하는 것입니다.
RyanKDalton-OffTheGridMaps

아마도 동기화는 질문 제목을 잘못 선택했을 것입니다. 실제로, 나는 이것을 SDE에서 PostGIS로 데이터 세트를 옮기고 유지하는 단기 방법으로 원합니다. 내 SDE에는 약 600 개의 데이터 세트가 있으며 수동으로 데이터를 미룰 수 없습니다. 메드 (mr).
geosmiles

답변:


19

Esri Shapefiles가 중개자 파일 기반 구성 요소 인 DB-> 파일-> DB 변환을 수행하는 대신보다 직접적인 DB-> DB 전송을 조사하는 것이 좋습니다. 이 작업을 수행 할 수있는 몇 가지 도구가 있지만 오픈 소스 GDAL / OGR 도구 에만 중점을두고 있습니다.

Windows Server가 있다고 가정하면 OSGeo4W를 사용하여 GDAL / OGR을 쉽게 설치할 수 있습니다 . 고급 설치 모드를 사용하면 SDE 드라이버 와 같은 사용자 정의 패키지 구성을 선택할 수 있습니다 (SDE 버전에 적합한 패키지 가 있는지 확인 하려면 이 패키지 목록을 참조하십시오. SDE 버전 9.0 ~ 9.2 만 지원됨). 이러한 패키지는 헤더 및 랩퍼 일 뿐이므로 CD / DVD ROM에 있어야하는 SDE 라이브러리를 설치하고 PATH 변수가 GDAL / OGR에 맞게 설정되어 있어야합니다. 성공적인 설치는 OSGeo4W 쉘에서 다음 명령을 사용하여 "SDE"를 표시합니다.ogr2ogr --formats

GDAL / OGR을 구성한 후 몇 가지 도구를 사용할 수 있습니다.

  • 명령 줄 도구 ogr2ogr 같은 명령 뭔가가 필요합니다 OSGeo4W 쉘에서 : 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옵션)
  • SDE에 연결 되는 기존 Python 스크립트 를 복사하고 수정 하면 다른 데이터 소스로 데이터를 전송하도록 수정할 수 있습니다.

이 방법의 주된주의 사항은 설정이 복잡하다는 것입니다.


+1이 매우 명확하고 유용한 답변입니다. 복잡하더라도 직접 경로입니다.
DEWright

이론적으로 나는 직접 DB 전송을 수행하는 아이디어를 좋아하지만 '빌리 기본'을 찾고 있습니다. 그러나 우리는 mo에 SDE 9.3.1이므로 위의 대답은 갈 것이 아닙니다. 내가 PostGIS와 SQL을 처음 사용한다고 말했지만 대량 업로드를 자동화 할 수있는 스크립트가 '밖에서'있다고 생각했을 것입니다!
geosmiles

1
모든 버전의 SDE (및 수백 개의 다른 형식 / DB)에 대한 다른 "DB-> DB"옵션은 FME 입니다. FME는 무료입니다 (테스트 할 수있는 무료 평가판이 있음). 이는 동기화 솔루션을 지원하기위한 지원을 제공 할 수 있음을 의미합니다. 그러나 이것은 분명히 예산이 필요합니다. 가장 좋은 무료 옵션을 맞춤에있는 좋은의 BAT 스크립트 shp2pgsql, psql
마이크 T

2
내가 ArcObjects GDAL 드라이버를 작성한 이유 중 하나는 정확히 이것을하는 것이 었습니다. ESRI 라이센스가 있기 때문에 복잡한 FeatureClass를 유지하고 매일 밤 PostGIS에 덤프하려고했습니다. arcsde 드라이버는 arcsde api 레이어를 통과하지만 arcobjects 드라이버는 arcobjects를 통과합니다. 우리는 1 년 동안 그것을 사용해 왔으며 꽤 잘 작동했습니다.
Ragi Yaser Burhum

기존 Python 스크립트를 사용할 수 있도록 "SDE"드라이버를 어디서 구할 수 있습니까? 찾을 수 없습니다 ...
ePascoal

6

PostGIS에는 쉐이프 파일을 PostGIS 데이터베이스에로드하는 데 사용할 수있는 shp2pgsql 이라는 로더가 있습니다. 옵션 중 하나 ( "-d")는 데이터를로드하기 전에 기존 데이터베이스 테이블을 삭제합니다. 모든 shapefile을 반복하고로드 할 수있는 배치 파일 또는 스크립트를 작성하는 것은 매우 간단해야합니다.

더 멋지게 만들고 싶다면 GDAL을 설치하고 OGR 도구 (ArcSDE 커넥터가있는)를 사용하고 shapefile 내보내기를 건너 뛸 수 있습니다. ArcSDE 커넥터에 대한 정보는 여기 에서 찾을 수 있습니다 .


빌리 기본 용어로, 기존의 테이블을 삭제하는 스크립트 (Windows 예약 된 작업으로 추가 될)를 작성하고 어떻게 Listed_Buildings라고 말한 다음 D : \에서 shp로 보유한 최신 버전을 업로드합니까? sde_export.
geosmiles

1
다른 11 개의 문자가 삭제되므로 필드 이름이 11 자보다 큰 경우 shapefile 접근 방식이 더 나쁩니다 !!
SIslam

1

나는 파티에 늦었다는 것을 알고 있지만 2 개의 데이터베이스를 사용하지 않는 다른 옵션이 있습니다.

Postgresql + Postgis 위에 ArcSDE를 가질 수 있습니다. 이것은 마스터이자 유일한 db 일 것입니다.

st_geometries (ESRI 독점)가 아닌 postgis 기하학을 사용하도록 ArcSDE를 구성 할 수 있습니다.

즉, postgis 도구를 사용하여 ArcSDE로드 / 편집 공간 테이블이 실제로 postgis 기본 테이블이므로 직접 사용할 수 있습니다.

예를 들어 qgis를 사용하여 postgis 데이터베이스에 직접 연결하고 arcsde를 통해 arcgis와 동일한 데이터를 읽을 수 있습니다.


1

또 다른 방법은 Geokettle (오픈 소스)과 같은 공간 ETL을 사용하는 것입니다.

http://www.spatialytics.org/projects/geokettle/

Geokettle을 사용하여 SQL 서버와 PostGIS간에 데이터를 항상 이동합니다. 그러나 PostGIS에서는 잘 작동하지만 SQL Server의 공간 데이터 형식으로 작업 할 때는 문제가 있습니다 (아래 힌트 참조). 또한 SDE Geometry를 SQL Server 기본 공간 데이터 유형으로 저장한다고 가정합니다. ArcCatalog를 통해 데이터를로드 할 때 Geometry 키워드를 사용하여이 작업을 수행 할 수 있습니다.

힌트 1 : SQL 서버에서 데이터를 선택할 때 .STAsText ()를 지오메트리 필드에 적용하면 Geokettle이 SQL 서버 데이터 유형을 질식시킵니다.

힌트 2 : SQL 서버에 데이터를 삽입 할 때는 텍스트 필드에 형상을 텍스트로 삽입해야합니다. 그런 다음 sql 단계를 사용하여 새 지오메트리 열을 추가하고 (필요한 경우) 텍스트 지오메트리에서 채 웁니다. 이렇게하면 SQL Server를 사용하여 형상의 OGC 표준 텍스트 표현에서 형상을 작성할 수 있습니다.

힌트 3 : 새 공간 테이블을 SDE에 등록하십시오.


SDE.ST_AsText ()를 사용하려면 SDE.ST_GEOMETRY_SHAPELIB_PKG가 필요합니다. 맞습니까?
ePascoal

0

원래 9.3 db에서 데이터베이스 복제 설정을 고려하십시오.
새로운 10보다 잘 작동하지는 않지만
postgis 데이터 유형 pg_geometry를 사용하여 postgresql의 다른 sde로 복제합니다.

다음은 esri 도움말입니다.
참고 : 두 db가 모두 같은 시스템에 있지 않은 경우 중복 라이센스가 필요합니다.


중복 라이센스를 얻는 것이 오픈 소스로의 전환점을 잃고있는 것 같습니다!
geosmiles

원래 DB가 postgresql에 있으면 동일한 db (다중 인스턴스 인스턴스)에서 모두 수행 할 수 있습니다. 또는 sde와 동일한 시스템에 postgresql을 설치하십시오. 그렇지 않다면 개발을 고려하고 중간 ~ 2.5k 년 동안 EDN (또 다른 sde)을 구입할 수 있습니다.
브래드 네섬

0

ArcObject를 다음과 같이 쓸 수 있습니다.

A) arcsde 데이터베이스를 덤프하십시오. B) shp2pgsql SQL을 생성하는 일반 C # 코드 C) 오래된 테이블을 덤프하는 일반 C # 코드; D) 모든 shp2pgsql을 postgresql에 실행하는 일반 c #;

npgsql 드라이버를 사용하여 postgis 데이터베이스에 직접 함수와 sql 문을 실행하여이를 수행 할 수 있습니다.


0

ArcSDE 지오메트리는 무엇입니까 ( 관계형 데이터베이스의 지오 데이터베이스 스토리지 )? 이러한 시나리오에서는 ST_Geometry 유형 사용을 고려한 후 PostGre / PostGIS 복제 ( PostGIS Replication @ FOSS4G ) 도구를 사용할 수 있습니다. 이 체계는 에디션 (버전 데이터베이스)을위한 ArcSDE / ArcGIS / 지오 데이터베이스 기능 및 확산 (복제 된 확산 데이터베이스)을위한 오픈 소스 도구를 사용하는 이점이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.