gis python – Insertar un punto en PostGIS usando Python

Pregunta:

¿Cuál es la forma correcta de insertar un punto en una base de datos PostGIS usando Python?

Respuesta:

Primero, instale el paquete psycopg2 , una interfaz Pythonic para PostgreSQL.

Luego, use ST_MakePoint :

>>> import psycopg2
>>> conn = psycopg2.connect(dbname=..., port=..., user=...,
                            password=..., host=...)
>>> cur = conn.cursor()
>>> x, y, z, = 32, 34, 0
>>> cur.execute("SELECT ST_SetSRID(ST_MakePoint(%s, %s, %s),4326);", (x, y, z))
>>> cur.fetchall()
[('01010000A0E6100000000000000000404000000000000041400000000000000000',)]

ST_AsText se puede utilizar para validar los valores:

>>> cur.execute("SELECT ST_AsText(ST_SetSRID(ST_MakePoint(%s, %s, %s),4326));", (x, y, z))
>>> cur.fetchall()
[('POINT Z (32 34 0)',)]

Notas

  • Recuerda que (lat, lon) es (y, x) , no (x, y) .
  • Utilice siempre parámetros, en lugar de manipulaciones de cadenas, para evitar la inyección de SQL . En estos ejemplos, hicimos una tupla (x, y, z) al final para que psycopg2 pueda manejar la sustitución.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım