21. Hoja de Respuestas

21.1. Results For Un resumen de la Interfaz

21.1.1. basic Resumen (Parte 1)

Remítase a la imagen que muestra el diseño de la interfaz y compruebe que recuerda los nombres y las funciones de los elementos de la pantalla.

Back to text

21.1.2. basic Resumen (Parte 2)

  1. Guardar como

  2. Zoom a la capa

  3. Invertir selección

  4. Renderizado on/off

  5. Línea de medida

Volver al texto

21.2. Results For Añadiendo Tu Primera Capa

21.2.1. basic Preparación

En el área principal del cuadro de diálogo debería ver muchas formas con diferentes colores. Cada forma corresponde a una capa que puede identificar por su color en el panel izquierdo (sus colores pueden ser diferentes a los de abajo):

../../../_images/basic_map.png

Volver al texto

21.2.2. basic Cargando datos

Su mapa debería tener siete capas:

  • protected_areas

  • places

  • rivers

  • roads

  • landuse

  • buildings (tomada de training_data.gpkg) y

  • water (taken from exercise_data/shapefile).

Volver a texto

21.3. Results For Simbología

21.3.1. basic Colores

  • Compruebe que los colores están cambiando como espera que cambien.

  • Basta con seleccionar la capa water en la leyenda y luego hacer clic en el botón symbology Abrir el panel de estilo de capa. Cambie el color a uno que se ajuste a la capa de agua.

../../../_images/answer_water_blue.png

Nota

Si desea trabajar solo en una capa a la vez y no desea que las otras capas lo distraigan, puede ocultar una capa haciendo clic en la casilla de verificación junto a su nombre en la lista de capas. Si el cuadro está en blanco la capa estará oculta.

Volver al texto

21.3.2. basic Estructura de símbolos

Ahora su mapa debería ser parecido a este:

../../../_images/answer_symbology1.png

Si es usted un usuario principiante, puede detenerse aquí.

  • Use el método anterior para cambiar los colores y estilos a todas las capas restantes.

  • Trate de usar colores naturales para los objetos. Por ejemplo, una carretera no debería ser roja o azul, sino gris o negra.

  • Tampoco dude en experimentar con diferentes configuraciones de estilos de relleno y estilo de trazo para los polígonos.

../../../_images/answer_symbology2.png

Volver al texto

21.3.3. moderate Capas de símbolos

Personalice su capa buildings como desee, pero recuerde que tiene que ser fácil distinguir las diferentes capas sobre el mapa.

He aquí un ejemplo:

../../../_images/answer_buildings_symbology.png

Volver al texto

21.3.4. moderate Niveles de símbolo

Para hacer el símbolo requerido, necesitará tres capas de símbolos:

../../../_images/answer_road_symbology.png

La capa de símbolo más baja es una línea gris sólida y amplia. En la parte superior hay una línea amarilla sólida ligeramente más delgada y finalmente otra línea negra sólida más delgada.

Si las capas de su símbolo se parecen a las anteriores pero no obtiene el resultado que desea:

  1. Compruebe que los niveles de sus símbolos sean así:

    ../../../_images/answer_road_symbol_levels.png
  2. Ahora su mapa debería tener este aspecto:

    ../../../_images/target_road_symbology.png

Volver al texto

21.3.5. hard Niveles de símbolo

  1. Ajuste sus niveles de símbolo a estos valores:

    ../../../_images/answer_road_symbol_layers.png
  2. Pruebe con diferentes valores para obtener diferentes resultados.

  3. Abra de nuevo su mapa original antes de continuar con el siguiente ejercicio.

Volver al texto

21.4. moderate Marcadores de Borde

A continuación, se muestran ejemplos de la estructura del símbolo:

../../../_images/answer_marker_line.png
../../../_images/answer_marker_line2.png

Back to text

21.4.1. hard Simbología del generador de geometría

  • Pulse el botón signPlus para añadir otro nivel de símbolo.

  • Mueva el nuevo símbolo al final de la lista pulsando el botón arrowDown.

  • Elija un buen color para rellenar los polígonos de agua.

  • Pulse en Marcador de la simbología del generador de geometría y cambie el círculo por otra forma a su gusto.

  • Intente experimentar otras opciones para obtener resultados más útiles.

Back to text

21.5. Results For Datos de atributos vectoriales

21.5.1. basic Explorando atributos de datos vectoriales

  • Debe haber 9 campos en la capa rivers:

    1. Seleccione la capa en el panel Capas.

    2. Pulse con el botón derecho del ratón y seleccione Abrir tabla de atributos, o pulse el botón openTable en la Barra de herramientas de atributos.

    3. Cuente el número de columnas.

    Truco

    Un método más rápido podría ser haciendo doble clic en la capa rivers y abrir la pestaña Propiedades de la capa -> Campos, donde encontrará una lista numerada de los campos de la tabla.

  • La información sobre las ciudades está disponible en la capa: guilabel: places. Abra su tabla de atributos como lo hizo con la capa rivers: hay dos entidades cuyo atributo place se establece en town : Swellendam y Buffeljagsrivier. Puede agregar comentarios sobre otros campos de estos dos registros, si lo desea.

  • El campo name es el más útil para mostrar como etiquetas. Esto se debe a que todos sus valores son únicos para cada objeto y es muy poco probable que contengan valores NULL. Si sus datos contienen algunos valores NULL, no se preocupe, siempre que la mayoría de sus lugares tengan nombres.

Back to text

21.6. Results For Etiquetas

21.6.1. moderate Personalización de etiquetas (Parte 1)

Su mapa ahora debería mostrar los puntos del marcador y las etiquetas deberían estar desplazadas 2 mm. El estilo de los marcadores y las etiquetas debe permitir que ambos sean claramente visibles en el mapa:

../../../_images/customised_labels_one.png

Volver al texto

21.6.2. moderate Personalización de etiquetas (Parte 2)

Una posible solución tendría este resultado final:

../../../_images/possible_outcome_map.png

Para llegar a este resultado:

  • Utilice un tamaño de fuente de 10

  • Utilice una distancia alrededor de la ubicación del punto, de 1.5 mm

  • Utilice un tamaño de marcador de 3.0 mm

  • Además, este ejemplo usa la opción Rodear en carácter:

    ../../../_images/wrap_character_settings.png
  • Añada un espacio en este campo y haga clic en Aplicar para lograr el mismo efecto. En nuestro caso, algunos de los nombres de lugares son muy largos, lo que da como resultado nombres con varias líneas que no son muy fáciles de usar. Quizá esta configuración sea más apropiada para su mapa.

Volver al texto

21.6.3. hard Utilización de la configuración de definición de datos

  1. Aún en modo de edición, establezca los valores de FONT_SIZE a lo que prefiera. El ejemplo utiliza 16 para ciudades, 14 para barrios residenciales, 12 para localidades y 10 para aldeas.

  2. Recuerde guardar los cambios y salga del modo de edición

  3. Regrese a las opciones de formato Text para la capa places y seleccione FONT_SIZE en Atributo de campo del menú desplegable tamaño de fuente dataDefined de anulación de datos definidos:

    ../../../_images/font_size_override.png

    Sus resultados, si usó los valores antes mencionados, deberían ser estos:

    ../../../_images/font_override_results.png

Volver al texto

21.7. Results For Clasificación

21.7.1. moderate Refinar la clasificación

La configuración que usó puede que no sea la misma, pero con los valores Classes = 6 y Modo = Roturas Naturales (Jenks) (y usando los mismos colores , por supuesto), el mapa se verá así:

../../../_images/gradient_map_new_mode.png

Volver al texto

21.8. Results For Creando un nuevo conjunto de datos vector

21.8.1. basic Digitalizar

La simbología no importa, pero los resultados deberían verse más o menos así:

../../../_images/routes_layer_result.png

Volver al texto

21.8.2. moderate Topología: Herramienta de agregar anillo

La forma exacta no importa, pero debería conseguir un agujero en medio del elemento semejante a esto:

../../../_images/ring_tool_result.png
  • Deshaga su edición, antes de continuar con el ejercicio, con la siguiente herramienta.

Volver al texto

21.8.3. moderate Topología: Herramienta de agregar parte

  • Primero seleccione el Bontebok National Park:

../../../_images/park_selected.png
  • Ahora agregue su nueva parte:

../../../_images/new_park_area.png
  • Deshaga su edición, antes de continuar con el ejercicio, con la siguiente herramienta.

Volver al texto

21.8.4. hard Unir objetos espaciales

  • Use la herramienta Merge Selected Features, asegurándose primero de seleccionar los poligonos que desee unir.

  • Use el elemento con el OGC_FID de 1 como fuente de atributos (haga clic en la entrada correspondiente de la ventana de diálogo y después en el botón Tomar los atributos del elemento seleccionado):

Nota

Si está usando un conjunto de datos diferente, es muy probable que el OGC_FID de su polígono original no sea 1. Elija el elemento que tenga un OGC_FID.

../../../_images/merge_feature_dialog.png

Nota

Usando la herramienta Unir atributos de los rasgos seleccionados mantendrá las geometrías diferenciadas, pero les dará los mismo atributos.

Volver al texto

21.8.5. moderate Formas

Para el TIPO, hay obviamente un número limitado de tipos que una carretera puede tener y, si revisa la tabla de atributos de la capa, verá que están predefinidos.

  • Establezca el widget en Valor del mapa y haga clic en Cargar datos de la capa.

  • Seleccione Carreteras en el desplegable Etiqueta, y autopista para las opciones tanto de Valor como de Descripción:

    ../../../_images/value_map_settings.png
  • Haga click tres veces en Aceptar.

  • Si usa la herramienta Identificación en una calle mientras está activo el modo edición, la ventana de dialogo que debería ver sería como esta:

    ../../../_images/highway_as_value_map.png

Volver al texto

21.9. Results For Análisis Vector

21.9.1. basic Distancia desde institutos

  • Su ventana de diálogo del buffer debería parecerse a esta:

    ../../../_images/schools_buffer_setup.png

    La Distancia de búfer es 1 kilómetro.

  • El valor de Segmentos para aproximar se establece en 20. Esto es opcional, pero se recomienda porque hace que los búferes obtenidos resulten más suaves. Compare esto:

    ../../../_images/schools_buffer_5.png

    A esto:

    ../../../_images/schools_buffer_6.png

La primera imagen muestra el búfer con el valor Segmentos para aproximar establecido en 5 y la segunda lo muestra con el valor establecido en 20. En nuestro ejemplo, la diferencia es sutil, pero puede ver que los bordes del búfer son más suaves con el valor más alto.

Volver al texto

21.9.2. basic Distancia de restaurantes

Para crear la nueva capa houses_restaurants_500m, pasamos por un proceso de dos pasos:

  • Primero, cree un buffer de 500 m alrededor de los restaurantes y agregue la capa al mapa:

    ../../../_images/restaurants_buffer.png
    ../../../_images/restaurants_buffer_result.png
  • A continuación, extraiga los edificios dentro de esa área de búfer:

    ../../../_images/select_within_restaurants.png

Su mapa ahora debería mostrar solo aquellos edificios que estén a menos de 50 m de una carretera, 1 km de una escuela y 500 m de un restaurante:

../../../_images/restaurant_buffer_result.png

Volver al texto

21.10. Results For Análisis de Redes

21.11. moderate Ruta mas rápida

Abra Análisis de Red ► Ruta más corta (Punto a Punto) y rellene el diálogo con:

../../../_images/fastest_path_result.png

Asegúrese de que el Tipo de ruta a calcular es Mas rápido.

Haga click en Ejecutar y cierre la ventana de diálogo.

Abra ahora la tabla de atributos de la capa de salida. El campo coste contiene el tiempo de viaje entre los dos puntos (como fracción de horas):

../../../_images/fastest_path_attribute.png

Back to text

21.12. Results For Análisis Raster

21.12.1. basic Calcular Aspect

  • Establezca el diálogo Aspecto así:

    ../../../_images/answer_dem_aspect.png

Su resultado:

../../../_images/answer_aspect_result.png

Volver al texto

21.12.2. moderate Calcular pendiente (menos de 2 y 5 grados)

  • Ajuste su control calculadora ráster con:

    • la siguiente expresión: slope@1 <= 2

    • la capa slope como la Capa(s) de Referencia

    ../../../_images/answer_raster_calculator_slope.png
  • Para la versión de 5 grados, reemplace el 2 en la expresión y el nombre del archivo por un 5.

Sus resultados:

  • 2 grados:

    ../../../_images/answer_2degree_result.png
  • 5 grados:

    ../../../_images/answer_5degree_result.png

Volver al texto

21.13. Results For Completando el Análisis

21.13.1. moderate de Raster a Vector

  1. Abra el Constructor de consulta con click derecho en la capa all_terrain en el panel de Capas, y seleccionando la pestaña Propiedades ► Fuente.

  2. Luego construya la consulta "suitable" = 1.

  3. Haga clic en OK para dejar fuera todos los polígonos que no cumplan esa condición.

    Al representarse sobre el raster original, las áreas deben superponerse perfectamente:

    ../../../_images/polygonize_raster.png
  4. Puede guardar esta capa haciendo clic derecho en la capa :guilabel:ʻall_terrain` en el panel Capas y eligiendo :guilabel:`Guardar como… `. Luego continúe según las instrucciones.

Volver al texto

21.13.2. moderate Revisando los resultados

Puede observar que algunos edificios de la capa new_solution han sido divididos por la herramienta Intersección. Esto indica que solo una parte del edificio (y, por lo tanto, sólo una parte de la propiedad) está situada sobre un terreno adecuado. Por lo tanto, es razonable eliminar estos edificios de nuestro conjunto de datos.

Volver al texto

21.13.3. moderate Afinando el Análisis

En este momento, el análisis debe aparecer más o menos así:

../../../_images/new_solution_example.png

Considere un área circular, de 100 metros a la redonda.

../../../_images/circle_100.png

Si tiene un radio mayor de 100 metros, disminuir su tamaño en 100 metros (en todas direcciones) dará como resultado que una parte de él quede en el medio.

../../../_images/circle_with_remainder.png

Por lo tanto, puede ejecutar un buffer interior de 100 metros en la capa vectorial existente terreno_apto. En el resultado de aplicar la función buffer, lo que quede de la capa original representará las áreas a más de 100 m en donde haya terreno apto.

Para demostrarlo:

  1. Vaya a Vector ► Herramientas de Geoprocesamiento ► Buffer(s) para abrir el diálogo de búfer(s).

  2. Configúrelo así:

    ../../../_images/suitable_terrain_buffer.png
  3. Use la capa suitable_terrain con 10 segmentos y una distancia de buffer de -100 (la distancia se mide automáticamente en metros porque el mapa usa un SRC proyectado).

  4. Guarde la salida en el directorio exercise_data/residential_development/ con el nombre suitable_terrain_continuous100m.shp.

  5. Si es necesario, mueva la nueva capa sobre la capa original suitable_terrain.

    Sus resultados se verán más o menos así:

    ../../../_images/suitable_buffer_results.png
  6. Ahora utilice la herramienta Selección por ubicación (Vector ► Herramientas de investigación ► Selección por ubicación).

  7. Configúrelo de la siguiente manera:

    ../../../_images/select_by_location.png
  8. Seleccione los elementos de nueva_solución que intersequen elementos de terreno_apto_continuos100m.shp.

    Este es el resultado:

    ../../../_images/buffer_select_result.png

    Los edificios en amarillo están seleccionados. Aunque alguno de los edificios están parcialmente situados fuera de la nueva capa suitable_terrain_continuous100m, caen por completo dentro de la capa original suitable_terrain y por lo tanto cumplen todos nuestros requisitos.

  9. Guarde la selección en el directorio exercise_data/residential_development/ con el nombre final_answer.shp.

Volver al texto

21.14. Results For WMS

21.14.1. basic |FA| Cargar otra Capa WMS

Su mapa debería verse así (puede que necesite re-ordenar las capas):

../../../_images/geology_layer_result.png

Volver al texto

21.14.2. moderate Agregando un Nuevo Servidor WMS

  • Utilice el mismo método que antes para agregar el nuevo servidor y la capa adecuada según como se encuentre alojada en el servidor:

    ../../../_images/add_ogc_server.png
    ../../../_images/add_bluemarble_layer.png
  • Si realiza un acercamiento al área Swellendam, notará que este conjunto de datos tiene una baja resolución.

../../../_images/low_resolution_dataset.png

Por lo tanto, es mejor no usar este dato para el mapa actual. El dato de Blue Marble es más apropiado para las escalas nacionales y globales.

Volver al texto

21.14.3. moderate Agregando un Nuevo Servidor WMS

Puede observar que muchos servidores WMS no siempre están disponibles. A veces es temporal, a veces permanente. Un servidor WMS que funcionaba en el momento de escribir este artículo es el WMS World Mineral Deposits en http://apps1.gdr.nrcan.gc.ca/cgi-bin/worldmin_en-ca_ows. Es gratuito, no tiene restricciones de acceso y es global. Por tanto, satisface los requisitos. Sin embargo, tenga en cuenta que esto es solo un ejemplo. Hay muchos otros servidores WMS para elegir.

Volver al texto

21.15. Results For Integración GRASS

21.15.1. basic Añadir capas al Conjunto de Mapas

Puede agregar capas (tanto vectoriales como rasterizadas) en un GRASS Mapset arrastrándolas y soltándolas en el navegador (ver Follow Along: Cargar datos usando el navegador QGIS) o usando v.in.gdal.qgis para vectorial y r.in.gdal.qgis para capas ráster.

Back to text

21.15.2. moderate Raclasificar capa ráster

Para descubrir el valor máximo del ráster ejecute la herramienta r.info:. En la consola verá que el valor máximo es 1699.

Ahora está listo para escribir las reglas. Abra un editor de texto y agregue las siguientes reglas:

0 thru 1000 = 1
1000 thru 1400 = 2
1400 thru 1699 = 3

guarde el archivo como my_rules.txt y cierre el editor de texto.

Ejecute la herramienta r.reclass, escoja la capa g_dem y cargue el archivo que contiene las reglas que acaba de guardar.

Haga click en Ejecutar y después en Ver salida. Puede cambiar los colores y el resultado final debería parecerse a la siguiente imagen:

../../../_images/grass_reclass.png

Back to text

21.16. Results For Conceptos de Bases de Datos

21.16.1. basic Propiedades de la Tabla de Direcciones

Para nuestra tabla de direcciones teórica, podríamos querer almacenar las siguientes propiedades:

House Number
Street Name
Suburb Name
City Name
Postcode
Country

Al crear la tabla para representar un objeto de dirección, crearemos columnas para representar cada una de estas propiedades y les estaríamos asignando nombres compatibles con SQL y posiblemente nombres cortos

house_number
street_name
suburb
city
postcode
country

Volver al texto

21.16.2. basic Normalizando la Tabla de Personas

El mayor problema con la capa gente es que hay solo un campo de dirección que contiene todos los datos del domicilio. Pensando en la tabla direccion vista anteriormente en esta lección, sabemos que una dirección esta compuesta por varias propiedades. Si almacenamos toda esta información en un solo campo, haremos mucho mas difícil la actualización y la consulta de nuestros datos. Por lo tanto, debemos dividir el campo dirección en las distintas propiedades. Esto nos daría una tabla con la siguiente estructura:

id |     name      | house_no |  street_name   |    city    |   phone_no
 --+---------------+----------+----------------+------------+-----------------
 1 | Tim Sutton    |     3    | Buirski Plein  | Swellendam | 071 123 123
 2 | Horst Duester |     4    | Avenue du Roix | Geneva     | 072 121 122

Nota

En la siguiente sección, aprenderemos acerca de relaciones de llave foránea, que podrán ser usados en este ejemplo para mejorar aún más la estructura de nuestra base de datos.

Volver al texto

21.16.3. moderate Además normalización de la tabla de Personas

Actualmente nuestra tabla de personas se ve así:

id |     name     | house_no | street_id |  phone_no
---+--------------+----------+-----------+-------------
 1 | Horst Duster |        4 |         1 | 072 121 122

La columna street_id representa una relacion “uno a muchos” entre el objeto personas y el objeto relacionado calle, que esta en la tabla calles.

Una forma para normalizar aún más la tabla es dividir el nombre del campo en nombre y apellido:

id | first_name | last_name  | house_no | street_id |  phone_no
---+------------+------------+----------+-----------+------------
 1 |    Horst   |   Duster   |     4    |     1     | 072 121 122

Podemos crear también tablas independientes para nombre pueblo o ciudad y país, enlazándolos a nuestra tabla personas a través de una relación de “uno a muchos”:

id | first_name | last_name | house_no | street_id | town_id | country_id
---+------------+-----------+----------+-----------+---------+------------
 1 |    Horst   |   Duster  |     4    |     1     |    2    |     1

Un diagrama de ER para representar esto sería así:

../../../_images/er-people-normalised-example.png

Volver al texto

21.16.4. moderate Crear una tabla de Personas

El código SQL necesario para crear la tabla correcta de personas es:

create table people (id serial not null primary key,
                     name varchar(50),
                     house_no int not null,
                     street_id int not null,
                     phone_no varchar null );

El esquema para la tabla (introduzca \d people) sería así:

Table "public.people"

Column     |         Type          |                      Modifiers
-----------+-----------------------+-------------------------------------
id         | integer               | not null default
           |                       | nextval('people_id_seq'::regclass)
name       | character varying(50) |
house_no   | integer               | not null
street_id  | integer               | not null
phone_no   | character varying     |
Indexes:
  "people_pkey" PRIMARY KEY, btree (id)

Nota

Por motivos de ejemplificación, hemos omitido a propósito la restricción fkey.

Volver al texto

21.16.5. basic El comando DROP

El motivo por el que el comando DROP no funcionaría en este caso, es porque la tabla personas tiene un restricción de llave foránea para la tabla calles. Esto implica que eliminar (drop) la tabla calles dejaría la tabla personas con referencias a datos inexistentes en calles.

Nota

Es posible “forzar” la eliminación de la tabla calles mediante el uso del comando CASCADE, pero en este caso también se eliminaría la tabla personas y cualquier otra que tenga relación con la tabla calles. ¡Utilícelo con precaución!

Volver al texto

21.16.6. basic Insertar una nueva calle

El comando SQL que debe usar tiene este aspecto (puede reemplazar el nombre de la calle por uno de su elección):

insert into streets (name) values ('Low Road');

Volver al texto

21.16.7. moderate Agregar una nueva persona con relación de llave foránea

Aquí está la sentencia SQL correcta:

insert into streets (name) values('Main Road');
insert into people (name,house_no, street_id, phone_no)
  values ('Joe Smith',55,2,'072 882 33 21');

Si se fija nuevamente en la tabla de calles (utilizando una sentencia “select”, como antes), verá que el id de la entidad Carretera Principal es 2.

Eso es porque podríamos introducir solo el numero 2. Aunque no estemos viendo Carretera principal escrito completamente en la entrada de arriba, la base de datos podrá estar asociada a street_id con el valor de 2.

Nota

Si ya ha añadido un nuevo objeto street, puede encontrarse con que el nuevo Main Road tiene un ID de 3 y no de 2.

Volver al texto

21.16.8. moderate Devolver Nombre de Calles

Aquí esta la sentencia SQL correcta que debe usar:

select count(people.name), streets.name
from people, streets
where people.street_id=streets.id
group by streets.name;

Resultado:

count |    name
------+-------------
    1 | Low Street
    2 | High street
    1 | Main Road
(3 rows)

Nota

Se dará cuenta de que hemos añadido como prefijo para los nombres de un campo los nombres de las tablas (por ejemplo people.name y streets.name). Esto se debe hacer cada vez que el nombre de un campo sea ambiguo (es decir, que aparezca en más de una tabla de la base de datos)

Volver al texto

21.17. Results For Consultas Espaciales

21.17.1. basic Las unidades usadas en Consultas Espaciales

Las unidades usadas para el ejemplo de consulta son grados, porque el SRC de la capa es WGS84. Este es un SRC Geográfico, lo que significa que las unidades están en grados. Un SRC proyectado, como la proyección UTM, está en metros.

Recuerde que, cuando escriba la consulta, necesita saber en qué unidades está el SRC de la capa. Esto le permitirá escribir una consulta que devuelva los resultados esperados.

Volver al texto

21.17.2. basic Creando un índice espacial

CREATE INDEX cities_geo_idx
  ON cities
  USING gist (the_geom);

Volver al texto

21.18. Results For Construcion de geometría

21.18.1. moderate Creando linestrings

alter table streets add column the_geom geometry;
alter table streets add constraint streets_geom_point_chk check
     (st_geometrytype(the_geom) = 'ST_LineString'::text OR the_geom IS NULL);
insert into geometry_columns values ('','public','streets','the_geom',2,4326,
     'LINESTRING');
create index streets_geo_idx
  on streets
  using gist
  (the_geom);

Volver al texto

21.18.2. moderate «Enlazando tablas»

delete from people;
alter table people add column city_id int not null references cities(id);

(capturar ciudades en QGIS)

insert into people (name,house_no, street_id, phone_no, city_id, the_geom)
   values ('Faulty Towers',
           34,
           3,
           '072 812 31 28',
           1,
           'SRID=4326;POINT(33 33)');

insert into people (name,house_no, street_id, phone_no, city_id, the_geom)
   values ('IP Knightly',
           32,
           1,
           '071 812 31 28',
           1,F
           'SRID=4326;POINT(32 -34)');

insert into people (name,house_no, street_id, phone_no, city_id, the_geom)
   values ('Rusty Bedsprings',
           39,
           1,
           '071 822 31 28',
           1,
           'SRID=4326;POINT(34 -34)');

Si recibe el siguiente mensaje de error:

ERROR:  insert or update on table "people" violates foreign key constraint
        "people_city_id_fkey"
DETAIL: Key (city_id)=(1) is not present in table "cities".

entonces significa que mientras experimentaba con la creación de polígonos para la tabla de ciudades, debe haber eliminado algunos de ellos y empezado de nuevo. Vea las entradas de su tabla de ciudades y use cualquier id que exista.

Volver al texto

21.19. Results For Modelo de características simples

21.19.1. moderate Llenar tablas

create table cities (id serial not null primary key,
                     name varchar(50),
                     the_geom geometry not null);
 alter table cities
 add constraint cities_geom_point_chk
 check (st_geometrytype(the_geom) = 'ST_Polygon'::text );

Volver al texto

21.19.2. moderate Llenar la tabla Geometria_Columnas

insert into geometry_columns values
      ('','public','cities','the_geom',2,4326,'POLYGON');

Volver al texto

21.19.3. hard Agregar geometría

select people.name,
       streets.name as street_name,
       st_astext(people.the_geom) as geometry
from   streets, people
where  people.street_id=streets.id;

Resultado:

     name     | street_name |   geometry
--------------+-------------+---------------
 Roger Jones  | High street |
 Sally Norman | High street |
 Jane Smith   | Main Road   |
 Joe Bloggs   | Low Street  |
 Fault Towers | Main Road   | POINT(33 -33)
(5 rows)

Como puede ver, nuestra restricción permite agregar nulos en la base de datos.

Volver al texto