2014-04-24 8 views
0

Geometry 유형이있는 도면층을 지오메트리 컬렉션으로 만드는 데 문제가 있습니다. 따라서 셰이프 파일로 출력 할 수 없습니다. 아래에 코드를 첨부했습니다. dstLayer가 null입니다. 기하 구조 유형이 다각형 또는 다중 선 스트링이거나 다른 경우에는 발생하지 않습니다.은 geom 유형 wkbGeometryCollection을 사용하여 레이어를 생성하는 데 도움이 필요합니다.

spatialReference = osr.SpatialReference() 
spatialReference.SetWellKnownGeogCS('WGS84') 
driver = ogr.GetDriverByName("ESRI Shapefile") 
dstPath = os.path.join("common-border", "border.shp") 
dstFile = driver.CreateDataSource(dstPath) 
dstLayer = dstFile.CreateLayer("layer", spatialReference, ogr.wkbGeometryCollection) 

도움이 되겠습니다.

감사

+1

Shapefiles가 컬렉션을 지원하지 않기 때문에 불가능합니다. –

답변

0

ESRI Shapefile 드라이버 층 당 기하학 유형을 지원하며,이 기하학 컬렉션 타입 할 수 없다.

따라서는 다음과 같이 보일 것이다 :

# this will create a directory with 1 or more shapefiles 
dst = driver.CreateDataSource("common-border") 
# create common-border/points.shp 
pointLayer = dst.CreateLayer("points", spatialReference, ogr.wkbPoint) 
# create common-border/polygons.shp 
polygonLayer = dst.CreateLayer("polygons", spatialReference, ogr.wkbPolygon) 
# ... as needed 
dst.GetLayerCount() # 2 layers/shapefiles 

을 그리고 적절한 계층에 각 구조 유형을 추가해야합니다. 아마도 맵핑을 수행하기 위해 사전을 사용하여 할 수있는 현명한 일이있을 것입니다. 키가 지오메트리 유형에 존재하지 않으면 필요한 레이어를 만들 수 있습니다.

0

컬렉션을 변환하여 문제를 해결했습니다. 개별 구성 요소로 변환 한 다음 레이어에 그립니다. shapefiles가 컬렉션을 지원하지 않기 때문에 다른 방법으로는 불가능했습니다. 내 목표로 shapefile에 그것을 음모 로이 나를 위해 일했다.