2017-04-04 30 views
0

私のデータはcensus mapsです。私はshapefilesやWKTファイルに慣れていませんが、私は自分自身のコードを作成しようとしたので、solutionを見つけることができました。WKTマルチポリゴン列のシェイプファイルからCSVへ

import ogr 
import csv 

#Open files 
csvfile=open("states_wkt.csv",'wb') 
ds=ogr.Open("cb_2015_us_state_20m.shp") 
lyr=ds.GetLayer() 

#Get field names 
dfn=lyr.GetLayerDefn() 
nfields=dfn.GetFieldCount() 
fields=[] 
for i in range(nfields): 
    fields.append(dfn.GetFieldDefn(i).GetName()) 
fields.append('kmlgeometry') 
csvwriter = csv.DictWriter(csvfile, fields) 

これは動作しますが、私はのように見えるジオメトリ結果を得る:私はこのようなマルチポリゴンの形でジオメトリデータを返すしたい私の特定のケースで

""kmlgeometry"":""<MultiGeometry> 
<Polygon><outerBoundaryIs><LinearRing><coordinates>-118.593969,33.467198 
-118.484785,33.487483 -118.370323,33.409285 -118.286261 
</coordinates></LinearRing></outerBoundaryIs></Polygon> 
<Polygon><outerBoundaryIs><LinearRing><coordinates>-118.594033,33.035951 
-118.540069,32.980933 -118.446771,32.895424 -118.353504,32.821962 -118.425634 
</coordinates></LinearRing></outerBoundaryIs></Polygon> 
</MultiGeometry> 

を:

MULTIPOLYGON (((-71.6062550000000044 42.0133709999999994, 
-71.5276060000000058 42.0149979999999985, -71.5169060000000059 
42.0155979999999971, -71.4999080000000049 42.0171989999999980, 
-71.3814009999999968 42.0187979999999968, -71.3815050000000042 
42.0000110000000006, -71.3812010000000043 41.9811979999999991))) 

どうすれば実現できますか?私はGDALを使用して、使いやすい簡単なスクリプトを見つけるために管理

+0

をあなたが表示されたコードは、どの時点で、あなたはKMLを抽出しない、まったくの結果と一致していませんか?いずれにしても、ogr features/geomsには 'ExportToJSON'メソッドもあります。 –

+0

このコードはこの結果をもたらしました。私は読みやすさのためにそれを短縮しました。とにかく、これがKML形式であることのヒントについて感謝します。私がやったのは、http://gis.stackexchange.com/questions/7339/converting-shapefiles-to-text-asciiで見つけた 'ogr2ogr -f CSV output.csv myshape.shp -lco GEOMETRY = AS_WKT'です。ファイル –

答えて

0

ogr2ogr -f CSV multipolygon_states.csv cb_2015_us_state_20m.shp -nlt MULTIPOLYGON -lco GEOMETRY=AS_WKT 
関連する問題