Python, düzgün kütüphane: şekil çokgeninde afin bir işlem yapmak mümkün mü?


11

Lat / lon koordinatlarında döndürülmüş bir dikdörtgen oluşturmaya çalışıyorum.

Temel olarak, merkezin koordinatları ve merkezin etrafında dönme açısı var.

Düzgün veya gdal kullanarak veya başka bir şey yapmak mümkün mü?

Yanıtlar:


11

Shapely'nin affinitymodülü , herhangi bir geometride afin dönüşümlerini destekler, örneğin:

from shapely import affinity
from shapely.geometry import LineString

# Example geometry
line = LineString([(1, 3), (1, 1), (4, 1)])

# Rotate 30 degrees CCW from origin at the center of bbox
line_rot_center = affinity.rotate(line, 30, 'center')

# Rotate from origin at (1, 1)
line_rot_11 = affinity.rotate(line, 30, (1, 1))

Ne yazık ki, afin dönüşümle (lat, lon) bir rotasyon yapılmaz. Ya verileri yansıtmanız ve yansıtılan koordinatları döndürmeniz ya da küresel bir döndürme yapmanız gerekir.
whuber

1
Ah doğru, sorunun (lat, lon) bölümünü kaçırdım. Coğrafi girdiler için oluşturulmuş bir yakın çekim dönüşüm işlevi görmedim, bu nedenle sağladığınız ipuçları önemlidir.
Mike T

V1.2.17'den bu yana, henüz belgelendirilmemiş olmalarına rağmen Shapely afin dönüşümler geçirdi
Alex L

Ayrıca yazarın bloguna bakın: sgillies.net/blog/1168/shapely-1-2-17
Alex L

1
@AlexL türü help(shapely.affinity). Aslında neredeyse modül için manuel güncellemeyi hazırladım.
Mike T

2

Sextante'in işe yarayabileceği bir aracı var. Buna "Vektör katmanları için araçlar" altında Dönüşüm denir. Komutu çalıştırmak için açı, bağlantı noktası, ölçek faktörü ve çeviriyi tanımlayın. Sextante, gvsig, openjump, udig, diğerlerinin bir uzantısıdır. Komut satırından da çalışır.


2

Bunu yapmak için Python veya Shapely'de herhangi bir özellik görmüyorum, ancak bunu JTS (Java Topology Suite) ile yapabilirsiniz http://tsusiatsoftware.net/jts/main.html (GEOS, Shapely tarafından kullanılan lib bir porttur ancak JTS'nin daha fazla işlevi vardır)

Yazılımı http://sourceforge.net/projects/jts-topo-suite/ buradan indirebilir ve keşfetmek için oynamak için işletim sisteminize bağlı olarak testbuilder.sh veya testbuilder.bat dosyasını başlatabilirsiniz. Anladıktan sonra, GUI olmadan ancak yalnızca Java programlama ile aynı şeyi yapmanız gerekecektir.

http://geoscript.org/ python kodu ve java arasında yapıştırıcı yapmanıza yardımcı olabilir (çünkü bir uygulama Jython kullanıyor)



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.