Maaf jika pertanyaan berikut ini agak bodoh, tapi saya SANGAT baru dalam hal GIS ini.
Saya mencoba untuk mengubah beberapa gambar geoTiff yang diproyeksikan ke WGS84 menggunakan gdal di python. Saya telah menemukan pos yang menguraikan proses untuk mengubah poin dalam GeoTiff yang diproyeksikan menggunakan sesuatu yang mirip dengan yang berikut:
from osgeo import osr, gdal
# get the existing coordinate system
ds = gdal.Open('path/to/file')
old_cs= osr.SpatialReference()
old_cs.ImportFromWkt(ds.GetProjectionRef())
# create the new coordinate system
wgs84_wkt = """
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0,
AUTHORITY["EPSG","8901"]],
UNIT["degree",0.01745329251994328,
AUTHORITY["EPSG","9122"]],
AUTHORITY["EPSG","4326"]]"""
new_cs = osr.SpatialReference()
new_cs .ImportFromWkt(wgs84_wkt)
# create a transform object to convert between coordinate systems
transform = osr.CoordinateTransformation(old_cs,new_cs)
#get the point to transform, pixel (0,0) in this case
width = ds.RasterXSize
height = ds.RasterYSize
gt = ds.GetGeoTransform()
minx = gt[0]
miny = gt[3] + width*gt[4] + height*gt[5]
#get the coordinates in lat long
latlong = transform.TransformPoint(x,y)
Pertanyaan saya adalah, jika saya ingin mengonversi titik-titik ini dan membuat file GeoTiff WGS84 baru, apakah ini cara terbaik untuk melakukannya? Apakah ada fungsi yang ada yang akan melakukan tugas seperti dalam 1 langkah?
Terima kasih!
sumber
Seperti kata mdsumner, jauh lebih mudah untuk menggunakan baris perintah daripada binding python, kecuali jika Anda ingin mengeksekusi sangat tugas yang kompleks.
Jadi, jika Anda suka python, seperti saya, Anda dapat menjalankan alat baris perintah dengan:
atau beralih melalui daftar file:
Dan bahkan menggunakan alat multiprosesing menggunakan kekuatan penuh mesin Anda untuk menjalankan tugas besar.
sumber
os.sys
adalah modul bawaan; Anda menginginkanos.system
perintah