¿Cuál es la diferencia entre postgresql y postgis?
Capacidad de almacenar, consultar y modificar relaciones espaciales. En este artículo, "PostgreSQL" se refiere a la funcionalidad básica de una base de datos relacional, mientras que "PostGIS" se refiere a funciones extendidas de manipulación espacial.
Arquitectura cliente-servidor
PostgreSQL, como muchos productos de bases de datos, adopta una arquitectura cliente-servidor. El cliente realiza una solicitud al servidor y obtiene una respuesta. Este mecanismo es similar a cómo un navegador obtiene páginas web de un servidor web. En PostgreSQL, las solicitudes se realizan en lenguaje SQL y las respuestas son en su mayoría formularios extraídos de la base de datos.
El cliente y el servidor se pueden desplegar en el mismo dispositivo, es decir, se puede utilizar PostgreSQL en un único ordenador. El sistema de base de datos puede comunicarse de forma privada a través del mecanismo de comunicación de "bucle invertido" dentro del sistema. A menos que se configure específicamente, el mundo exterior no puede acceder a esta información.
Este artículo presenta tres clientes: línea de comandos, Quantum GIS y cliente de base de datos gráfica pgAdmin.
Crear una base de datos con capacidades de procesamiento de información espacial
El cliente de línea de comandos se ejecuta en un emulador de terminal. Abra un emulador de terminal en Accesorios del menú Aplicaciones, que mostrará una interfaz de línea de comandos estilo Unix. Ingrese:
psql -V
Presione Enter para confirmar. Se mostrará el número de versión de PostgreSQL.
En un servidor PostgreSQL se pueden organizar diferentes tareas en diferentes bases de datos. Cada base de datos funciona de forma independiente, con formularios, visualizaciones, usuarios, etc. Se especifica una base de datos al acceder a una base de datos PostgreSQL.
La lista de bases de datos en el servidor se puede consultar con el siguiente comando:
psql -l
La salida enumerará varias bases de datos configuradas en Live. Aquí hay una demostración de cómo crear uno nuevo.
PostgreSQL utiliza la herramienta creadob para crear una base de datos. La base de datos creada aquí debe tener las funciones extendidas de PostGIS, por lo que es necesario especificar la plantilla correspondiente. La nueva base de datos se llama aquí demostración. El comando es:
createdb-Ttemplate_postgisdemo
Ahora ejecute psql-l y debería poder ver la base de datos de demostración.
Las bases de datos PostGIS también se pueden crear utilizando el lenguaje SQL. Primero use el comando dropdb para eliminar la base de datos creada previamente y luego use el comando psql para abrir el analizador de comandos SQL:
dropdbdemopsql-dpostgres
Esto se conectará a una base de datos general del sistema. postgres. Ingrese el comando SQL para crear una nueva base de datos:
postgres=# CREATE DATABASE demo TEMPLATE=template_postgis;
Ahora puede convertir la conexión a la base de datos recién creada. Si desea volver a conectarse, puede utilizar el comando psql-ddemo. Pero también puede usar el siguiente comando dentro del sistema psql:
postgres=# \c demo
Una página de información mostrará la base de datos de demostración actualmente conectada.
Ingrese \dt para enumerar los formularios en la base de datos actual, el resultado es el siguiente:
demo=# \dtListofrelationsSchema|Name|Type|Owner--------+----- ---- ---------+-------+-------public|geometry_columns|table|userpublic|spatial_ref_sys|table|user(2rows)
Estas dos. Esta tabla es la predeterminada para PostGIS. Entre ellos, espacial_ref_sys almacena el sistema de coordenadas espaciales legal. Utilice la consulta SQL para ver:
demo=# SELECT srid,auth_name,proj4text FROM espacial_ref_sys LIMIT 10;srid|auth_name|proj4text-------+---------- -+ -----------------------------------------------3819 |EPSG|+proj=longlat+ellps=bessel +remolques...3821|EPSG|+proj=longlat+ellps=aust_SA+no_d...3824|EPSG|+proj=longlat+ellps=GRS8remolques8... 3889|EPSG|+proj=longlat+ellps= GRS8towgs8...3906|EPSG|+proj=longlat+ellps=bessel+no_de...4001|EPSG|+proj=longlat+ellps=airy+no_defs.. .4002|EPSG|+proj=longlat+a =6377340.189+b=63...4003|EPSG|+proj=longlat+ellps=aust_SA+no_d...4004|EPSG|+proj=longlat+ellps=bessel+ no_de...4005|EPSG|+proj= longlat+a=6377492.018+b=63...(10rows)
La pantalla anterior confirma que la base de datos ha establecido la función de operación espacial. Las columnas de geometría en la base de datos se utilizan para registrar qué tablas tienen información espacial.
Crear tablas de datos espaciales manualmente
Se ha establecido la base de datos espacial y ahora se pueden crear tablas con información espacial.
Primero crea una tabla normal para almacenar información sobre las ciudades. Esta tabla tiene dos columnas, una es el número de identificación y la otra es el nombre de la ciudad:
demo=# CREAR TABLA ciudades (id int4, nombre varchar(50));
Ahora agregue una La columna espacial se usa para almacenar la ubicación de la ciudad. Es costumbre llamar a esta columna the_geom. Registra el tipo de datos (punto, línea, superficie), cuántas dimensiones (aquí es bidimensional) y el sistema de coordenadas espaciales. Aquí se utiliza el sistema de coordenadas EPSG:4326:
demo=# SELECT AddGeometryColumn ('cities', 'the_geom', 4326, 'POINT', 2);
Después de completar, consulta El formulario de ciudades debería mostrar esta nueva columna. Al mismo tiempo, la página mostrará que no hay registros (0 filas) para la expresión actual.
demo=# SELECT * de ciudades;id|nombre|the_geom----+------+----------(0rows)
Para agregar registros, necesita usar comandos SQL.
Para columnas espaciales, utilice ST_GeomFromText de PostGIS para convertir texto en registros de coordenadas y números de sistemas de referencia:
demo=# INSERT INTO technologies (id, the_geom, name) VALUES (1,ST_GeomFromText('POINT( -0.1257 51.508)',4326),'Londres, Inglaterra'); demo=# INSERTAR EN ciudades (id, the_geom, nombre) VALUES (2,ST_GeomFromText('POINT(-81.233 42.983)',4326),'Londres, Ontario' );demo=# INSERTAR EN ciudades (id, the_geom, nombre) VALUES (3,ST_GeomFromText('POINT(27.91162491 -33.01529)',4326),'East London,SA');
Por supuesto , este método de entrada es difícil de operar. Otras formas de ingresar datos son más rápidas. Por ahora, ya hay algunos datos de la ciudad en la tabla y primero puede realizar consultas y otras operaciones.
Consulta simple
Las operaciones SQL estándar se pueden utilizar en formularios PostGIS:
demo=# SELECT * FROM cities;id|name|the_geom--- - +-----------------+------------------------------- ------------------------1|Londres, Inglaterra|0101000020E6100000BBB88D06F016C0BF1B2FDD2406C149402|Londres, Ontario|0101000020E6100000F4FDD478E94E54C0E7FBA9F1D27D45403 |EastLondon,SA |0101000020E610000040AB064060E93B4059FAD005F58140C0(3 filas)
Las coordenadas aquí están en formato hexadecimal ilegible. Para mostrar en texto WKT, use la función ST_AsText(the_geom) o ST_AsEwkt(the_geom).
También puedes usar ST_X(the_geom) y ST_Y(the_geom) para mostrar coordenadas en una dimensión:
demo=# SELECT id, ST_AsText(the_geom), ST_AsEwkt(the_geom), ST_X(the_geom), ST_Y( the_geom) DE ciudades;id|st_astext|st_asewkt|st_x|st_y----+------------------------------- --+-- ----------------------------------------+---- ------ --+-----------1|PUNTO(-0.125751.508)|SRID=4326;PUNTO(-0.125751.508)|-0.1257|51.5082|PUNTO(- 81.23342.983)|SRID =4326;PUNTO(-81.23342.983)|-81.233|42.9833|PUNTO(27.91162491-33.01529)|SRID=4326;PUNTO(27.91162491-33.01529)|27.91162 491|-33.01529(3 filas) p>
Consulta espacial:
PostGIS extiende PostgreSQL con muchas funciones de operación espacial. Lo anterior cubrió ST_GeomFromText para convertir formatos de coordenadas espaciales. La mayoría de las operaciones espaciales comienzan con ST (tipo espacial) y se enumeran en los capítulos correspondientes de la documentación de PostGIS. Aquí hay una pregunta específica: en metros y suponiendo que la tierra es un elipsoide perfecto, ¿cuál es la distancia entre las tres ciudades de arriba?
demo=# SELECCIONE p1.name,p2.name,ST_Distance_Sphere(p1.the_geom,p2.the_geom) DE ciudades COMO p1, ciudades COMO p2 DONDE p1.id > p2.id;nombre|nombre| st_distance_sphere-----------------+------------------+------------ - -------London,Ontario|London,England|5875766.85191657EastLondon,SA|London,England|9789646.96784908EastLondon,SA|London,Ontario|13892160.9525778(3rows)
La salida muestra la distancia datos. Tenga en cuenta que la parte 'DÓNDE' impide enviar los datos de distancia de la ciudad a sí misma (0) o los datos de distancia de dos ciudades en diferentes disposiciones (las distancias de Londres, Inglaterra a Londres, Ontario y de Londres, Ontario a Londres, Inglaterra son lo mismo). Intente cancelar 'DONDE' y vea los resultados.
Aquí se calculan utilizando diferentes parámetros del elipsoide (nombre del elipsoide, longitud del eje semiprincipal, achatamiento):
demo=# SELECT p1.name,p2.name,ST_Distance_Spheroid(p1 . the_geom,p2.the_geom,'SPHEROID["GRS_1980",6378137,298.257222]')FROMcitiesASp1,citiesASp2WHEREp1.id>p2.id;nombre|nombre|st_distance_spheroid---------------- ---------- --+-----------------+------------------- ---London,Ontario|London,England |5892413.63776489EastLondon,SA|London,England|9756842.65711931EastLondon,SA|London,Ontario|13884149.4140698(3rows)
Cartografía
Mapeo con Los datos de PostGIS requieren la correspondiente asistencia al cliente. Se encuentran disponibles una variedad de clientes, incluidos Quantum GIS, gvSIG y uDig. Lo siguiente utiliza Quantum GIS:
Inicie Quantum GIS desde el menú Desktop GIS y seleccione AddPostGISlayers en su menú de capas. Los parámetros para conectarse a la base de datos PostGIS de Natural Earth están disponibles en el menú desplegable Conexiones. Aquí se pueden definir y almacenar otras configuraciones. Haga clic en Editar para ver parámetros específicos. Haga clic en Conectar:
El sistema mostrará todas las tablas de información espacial para su selección:
Seleccione la tabla de lagos y haga clic en Agregar en la parte inferior para agregar. Cargar en la parte superior puede cargar una nueva configuración de conexión de base de datos. Se importarán los datos:
La distribución de los lagos se muestra en la interfaz. QGIS no comprende el significado de la palabra lago y es posible que no utilice automáticamente el color azul. Consulta su manual para saber cómo configurarlo. Haga zoom aquí para ver un famoso grupo de lagos en Canadá.
Crear automáticamente formularios de datos espaciales
La mayoría de los sistemas SIG de escritorio en OSGeo Live pueden importar archivos como shp a la base de datos. La demostración de QGIS todavía se utiliza aquí.
Para importar shp a QGIS, puede utilizar el complemento PostGIS Manager. Seleccione FetchPlugins en el menú Complementos para importar la lista de complementos oficiales más reciente (se requiere conexión de red). Busque PostGISManager y haga clic en Installplugin para instalarlo.
Una vez completado, haga clic en PostGIS Manager en el menú de complementos para comenzar. También puedes hacer clic en el ícono del elefante y la tierra en la barra de herramientas.
Este complemento se conectará a la base de datos de Natural Earth. Si se le solicita una contraseña, déjela en blanco. En la interfaz abierta, seleccione el formulario para mostrar la información correspondiente. La pestaña Vista previa muestra una vista previa del mapa. Aquí, la capa de lugares poblados se selecciona y se amplía a una isla:
A continuación, use PostGIS Manager para importar shp a la base de datos. Aquí utilizamos los datos del síndrome de muerte súbita del lactante (SIDS) de Carolina del Norte incluidos en la extensión de estadísticas de R:
Seleccione la opción Loaddatafromshapefile en el menú Datos. Haga clic... para seleccionar sids.shp en R maptools.