26 votos

¿Qué herramientas en Python están disponibles para hacer una gran distancia circular + creación de líneas?

Necesito usar Python para crear una gran distancia circular, tanto un número como, preferiblemente, algún tipo de 'curva' que pueda usar para dibujar en un mapa del lado del cliente. No me importa el formato de la curva, ya sea WKT o un conjunto de pares de coordenadas, solo quiero sacar los datos.

¿Qué herramientas existen? ¿Qué debo usar?

13voto

Bernd Haug Puntos 836

pyproj tiene lafunción Geod.npts que devolverá una matriz de puntos a lo largo de la ruta. Tenga en cuenta que no incluye los puntos terminales en la matriz, por lo que debe tenerlos en cuenta:

 import pyproj
# calculate distance between points
g = pyproj.Geod(ellps='WGS84')
(az12, az21, dist) = g.inv(startlong, startlat, endlong, endlat)

# calculate line string along path with segments <= 1 km
lonlats = g.npts(startlong, startlat, endlong, endlat,
                 1 + int(dist / 1000))

# npts doesn't include start/end points, so prepend/append them
lonlats.insert(0, (startlong, startlat))
lonlats.append((endlong, endlat))

11voto

GSree Puntos 161

GeographicLib tiene una interfaz de Python :

Esto puede computar geodésicas en un elipsoide (establecer el aplanamiento en cero para obtener grandes círculos) y puede generar puntos intermedios en una geodésica (ver los comandos "Línea" en la muestra).

Aquí se explica cómo imprimir puntos en la línea geodésica desde JFK al aeropuerto de Changi (Singapur):

 from geographiclib.geodesic import Geodesic
geod = Geodesic.WGS84

g = geod.Inverse(40.6, -73.8, 1.4, 104)
l = geod.Line(g['lat1'], g['lon1'], g['azi1'])
num = 15  # 15 intermediate steps

for i in range(num+1):
    pos = l.Position(i * g['s12'] / num)
    print(pos['lat2'], pos['lon2'])

->
(40.60, -73.8)
(49.78, -72.99)
(58.95, -71.81)
(68.09, -69.76)
(77.15, -65.01)
(85.76, -40.31)
(83.77, 80.76)
(74.92, 94.85)
...

3voto

3voto

Otto Puntos 1246

geopy Una caja de herramientas de codificación geográfica para Python

http://code.google.com/p/geopy/wiki/GettingStarted#Calculating_distances

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X