2011-09-02 4 views
3

명령 창에서 다음 코드를 실행하려고합니다. 코드가 실행되지만 .SHP 파일에는 값이 없습니다. 테이블에는 GeographyCollections 및 Polygons가 Geography 유형의 필드에 저장되어 있습니다. 나는 SQL 문에서 지리 유형에 대한 많은 변형을 시도했다 - 바이너리, 텍스트 등. 그러나 행운은 없다. 출력 .DBF 파일에는 데이터가 있으므로 데이터베이스 연결은 작동하지만 셰이프 .Shp 파일과 .shx 파일에는 데이터가없고 크기는 각각 17K와 11K입니다.Ogr2ogr을 사용하여 SQL Server에서 셰이프 파일 만들기

제안 사항?

ogr2ogr -f "ESRI Shapefile" -overwrite c:\temp -nln Zip_States -sql "SELECT [ID2],[STATEFP10],[ZCTA5CE10],GEOMETRY::STGeomFromWKB([Geography].STAsBinary(),4326).STAsText() AS [Geography] FROM [GeoSpatial].[dbo].[us_State_Illinois_2010]" ODBC:dbo/[email protected] 

답변

6

ESRI Shape 파일은 기하 만 하나의 유형을 포함 할 수 있습니다 - 포인트, 유도 선, 다각형 등

귀하의 설명을 조회 기하학의 여러 유형을 반환 제안, 그래서 첫 번째 (사용 STGeometryType() == 'POLYGON'을 제한 예를 들어,).

둘째, STAsText()를 사용하여 공간 문자열을 텍스트 문자열로 반환하지만 OGR에 공간 필드라는 사실을 알려주지 않으므로 WKT를 일반 텍스트 열로 처리하고 추가하는 것입니다. dbf 파일의 속성으로 사용합니다.

OGR에게 공간 정보가 포함되어 있음을 알리려면 연결 문자열에 "Tables"매개 변수를 추가 할 수 있습니다. 그러나 SQL Server 2008을 사용하는 경우 WKT/WKB에서 모든 캐스팅을 수행 할 이유가 없습니다. OGR2OGR은 SQL Server의 기본 바이너리 형식을 정상적으로로드합니다.

실제로 SQL Server 2008 또는 Denali를 사용하고 있습니까? 직렬화 형식이 변경 되었기 때문에 OGR2OGR은 새로운 형식을 읽을 수 없습니다. 그래서,이 경우 WKB로 먼저 변환하는 것이 더 안전합니다 (그러나 더 느립니다).

다음 날 Shape 파일에 SQL 서버에서 다각형의 테이블을 덤프에 대한 작품 :

ogr2ogr -f "ESRI Shapefile" -overwrite c:\temp -nln Zip_States -sql "SELECT ID, geom26986.STAsBinary() FROM [Spatial].[dbo].[OUTLINE25K_POLY]" "MSSQL:server=.\DENALICTP3;database=Spatial;trusted_connection=yes;Tables=dbo.OUTLINE25K_POLY(geom26986)" 
0

하면 다음 명령

ogr2ogr shapeFileName.shp -overwrite -sql "select top 10 * from schema.table" "MSSQL:Server=serverIP;Database=dbname;Uid=userid;trusted_connection=no;Pwd=password" -s_srs EPSG:4326 -t_srs EPSG:4326 
에게 시도
관련 문제