WKT ve Proj4 dizgileri arasında programlı olarak dönüştürmenin en iyi yolu nedir?


14

Bazı şekil dosyaları, kendisiyle ilişkilendirilmiş bir .prj dosyasına sahiptir ve .prj dosyası, WKT biçimindeki şekil dosyasının projeksiyon bilgilerini içerir. Bazen WKT'yi proj4 dizgisine dönüştürmem ve bazen de geri dönüştürmem gerekiyor.

Bunu yapmak için hazır bir kütüphane var mı?

Yanıtlar:


12

GDAL'nin OGR Mekansal Referans kısmı hile yapmalıdır. capooti , çevirinin şekil dosyasından WKT'ye nasıl dönüştürüleceğini gösteren başka bir soruya mükemmel bir cevap verdi . Ayrıca sınıf referansını da kontrol etmek isteyebilirsiniz . Tersi basitçe:

from osgeo import osr

srs = osr.SpatialReference()
wkt_text = 'GEOGCS["GCS_WGS_1984",DATUM["WGS_1984",' \
           'SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],'\
           'UNIT["Degree",0.017453292519943295]]'
# Imports WKT to Spatial Reference Object
srs.ImportFromWkt(wkt_text)
srs.MorphToESRI() # converts the WKT to an ESRI-compatible format
print "ESRI compatible WKT for use as .prj:" % srs.ExportToWkt()

Herkesin osgeoPython 3 için işe yaramayan bir çözümü olmayan bir çözümü var mı?
Dan Nguyen

OP Proj4'ü sordu. ExportToProj4()Bunun yerine son satırda mı demek istediniz ?
astrojuanlu

2

PyCRS'yi de kullanabilirsiniz :

import pycrs

print(pycrs.parser.from_esri_wkt(wkt_text).to_proj4())
# +proj=longlat +ellps=WGS84 +a=6378137.0 +f=298.257223563 +pm=0.0  +no_defs

1

Hiçbir kütüphane bilmiyorum, ancak çevirileri almak için bu siteyi kullanabilirsiniz: http://spatialreference.org/

EDIT: Bunu yapmak için ogr python bağlamaları ile çalışan bir python komut dosyası buldum. İşte burada .


teşekkürler, ama bunu programlı olarak yapmam gerekiyor.
Cui Pengfei 崔鹏飞

1
Bazı googlinglerden sonra: spatialreference.org, GDAL tarafından da desteklenmektedir ve aynı kod yolunu (az ya da çok) kullanır gibi görünüyor.
Dan S.

Bu ilginç
Pablo

0

Pragrammatically proj4text dize dayalı özel projeksiyon dönüştürmek gerekir, bu yüzden kullanılan

projection = '+proj=lcc +lat_1=53 +lat_2=70 +lat_0=0 +lon_0=136 +x_0=0 +y_0=0 +ellps=intl +units=m +no_defs'

source = osr.SpatialReference() source.ImportFromEPSG(4326) target = osr.SpatialReference() target.ImportFromProj4(projection) transform = osr.CoordinateTransformation(source, target)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.