2016-06-23 13 views
1

私はシェープファイルからジオトラフラスタを構築するpythonスクリプトを構築しました。現在のところ、生成されたジオロケーションには形状ファイルの空間参照が含まれていません。シェイプファイルからジオテフに空間参照をコピーするにはどうすればよいですか?私はシェープファイルの空間参照を以下のコマンドで地理座標にコピーしようとしました:target_ds.SetProjection(source_layer.GetSpatialRef())
シェイプファイルに関連付けられた空間参照オブジェクトはジオテーフとは異なりますが、あるものから別のものへ行く方法を知っている。シェイプファイルからジオテフラスタに空間参照をコピーする方法は?

# This code creates a raster from a shapefile. 
# Every feature in the shapefile is included in the raster. 

import os 
import gdal 
import ogr  

os.chdir(r'C:\Users\pipi\Documents\Rogaine\Tarlo\gpx') #folder containing gpx files 
vector_fn = 'gpxcollection.shp' #filename of input shapefile 
pixel_size = 25 #same unit as coordinates 
raster_fn = 'test.tif' # Filename of the raster Tiff that will be created 

#______Open's the data source and reads the extent________ 
source_ds = ogr.Open(vector_fn) 
source_layer = source_ds.GetLayer() #returns the first layer in the data source 
x_min, x_max, y_min, y_max = source_layer.GetExtent() 

#______Create the destination raster file__________ 
x_res = int((x_max - x_min)/pixel_size) 
y_res = int((y_max - y_min)/pixel_size) 
# create the target raster file with 1 band 
target_ds = gdal.GetDriverByName('GTiff').Create(raster_fn, x_res, y_res, 1, gdal.GDT_Byte) 
target_ds.SetGeoTransform((x_min, pixel_size, 0, y_max, 0, -pixel_size)) 
band = target_ds.GetRasterBand(1) 

#______Populates the raster file with the data from the shapefile____ 
gdal.RasterizeLayer(target_ds, [1], source_layer, burn_values=[1]) 

del target_ds #flushes data from memory. Without this you often get an empty raster. 

答えて

0

GDAL dataset.SetProjection()方法はthe docsに従って、周知のテキスト(WKT)またはPROJ4文字列を想定しています「という文字列がOGC WKTまたはPROJ.4形式でなければなりません」。

次のいずれかを実行することによって、これを達成することができます:

source_layer.GetSpatialRef().ExportToWkt() 
source_layer.GetSpatialRef().ExportToProj4() 
+0

ありがとうございました。 Wkt形式で動作するようになりました。特定の空間参照をProj.4形式にエクスポートすると、誤った空間参照が発生します。 –

関連する問題