21. Folha de respostas¶
21.1. Results For Uma visão geral da interface¶
21.1.1. Visão Geral (Parte 1)¶
Volte para a imagem que mostra o layout da interface e verifique se você se lembra dos nomes e funções dos elementos da tela.
21.1.2. Visão Geral (Parte 2)¶
Salvar como
Zoom para a camada
Invert selection
Renderizador on/off
Linha de medida
21.2. Results For Adicionando sua Primeira Camada¶
21.2.1. Preparacão¶
Na área principal da caixa de diálogo, você deve ver muitas formas com cores diferentes. Cada forma pertence a uma camada que você pode identificar por sua cor no painel esquerdo (suas cores podem ser diferentes das cores abaixo):
21.2.2. Carregamento de Dados¶
Seu mapa deve ter sete camadas:
protected_areas
places
rivers
roads
landuse
buildings (de
training_data.gpkg
) eágua (do
exercise_data/shapefile
).
21.3. Results For Simbologia¶
21.3.1. Cores¶
Comprueba que los colores están cambiando como esperas que cambien.
Basta selecionar a camada water na legenda e clicar no botão Abrir o painel de Estilo de Camada. Mude a cor para uma que sirva para camada de água.
Nota
Se você deseja trabalhar apenas uma camada por vez e não deseja que as outras o/a distraiam, você pode ocultar uma camada clicando na caixa de seleção ao lado do nome na lista de camadas. Se a caixa estiver em branco, a camada estará oculta.
21.3.2. Estructura de símbolos¶
Ahora tu mapa debería aparecer así:
Si tu eres un usuario principiante, puede detenerse aquí.
Use el método anterior para cambiar los colores y estilos a todas las capas restantes.
Trata de usar colores naturales para los objetos. Por ejemplo, una carretera no debería ser roja o azul, pero si puede ser gris o negro.
Também fique à vontade para experimentar diferentes configurações Estilo de preenchimento e Estilo de traço para os polígonos.
21.3.3. Capas de símbolos¶
Personaliza tu construcciones capa como gustes, pero recuerda que tiene que ser fácil de contar las diferentes partes del mapa.
He aquí un ejemplo:
21.3.4. Niveles de símbolo¶
Para criar o símbolo necessário, você precisa de três camadas de símbolos:
A camada de símbolo mais baixa é uma linha cinza sólida e larga. No topo, há uma linha amarela sólida levemente mais fina e, finalmente, outra linha preta sólida mais fina.
Se as camadas do seu símbolo se assemelham às anteriores, mas você não está obtendo o resultado desejado:
Verifique se os seus níveis de símbolo se parecem com isso:
Ahora tu mapa debería tener este aspecto:
21.3.5. Niveles de símbolo¶
Ajustar tus niveles de símbolo a estos valores:
Probar con diferentes valores para dar diferentes resultados.
Abrir de nuevo su mapa original antes de continuar con el siguiente ejercicio.
21.4. Marcadores de Estrutura de Tópicos¶
Aqui estão exemplos da estrutura do símbolo:
21.4.1. *Simbologia do gerador de geometria *¶
21.5. Results For Vector Attribute Data¶
21.5.1. Exploring Vector Data Attributes¶
Deve haver 9 campos na camada rivers:
Selecione a camada no painel Camadas.
Clique com o botão direito do mouse e escolha Abrir Tabela de Atributos ou pressione o botão em :guilabel:`Barra de Ferramentas de Atributos’.
Conte o número de colunas.
Dica
A quicker approach could be to double-click the rivers layer, open the tab, where you will find a numbered list of the table’s fields.
Informações sobre cidades estão disponíveis na camada places. Abra sua tabela de atributos como você fez com a camada rivers: existem dois recursos cujo atributo local está definido como
town
: Swellendam e Buffeljagsrivier. Você pode adicionar comentários sobre outros campos desses dois registros, se desejar.O campo
name
é o mais útil para mostrar como rótulos. Isso ocorre porque todos os seus valores são únicos para cada objeto e é muito improvável que contenham valores NULL. Se seus dados contiverem alguns valores NULL, não se preocupe, desde que a maioria dos seus locais possua nomes.
21.6. Results For Labels¶
21.6.1. Personalizarción de Etiqueta (Parte 1)¶
Your map should now show the marker points and the labels should be offset by 2mm. The style of the markers and labels should allow both to be clearly visible on the map:
21.6.2. Personalizarción de Etiqueta (Parte 2)¶
Una posible solución tiene este producto final:
Para llegar a este resultado:
Use a font size of
10
Use an around point placement distance of
1.5 mm
Use a marker size of
3.0 mm
In addition, this example uses the Wrap on character option:
Enter a
space
in this field and click Apply to achieve the same effect. In our case, some of the place names are very long, resulting in names with multiple lines which is not very user friendly. You might find this setting to be more appropriate for your map.
21.6.3. Utilización de la configuración de definición de datos¶
Still in edit mode, set the
FONT_SIZE
values to whatever you prefer. The example uses16
for towns,14
for suburbs,12
for localities, and10
for hamlets.Remember to save changes and exit edit mode
Return to the Text formatting options for the
places
layer and selectFONT_SIZE
in the Attribute field of the font size data defined override dropdown:Sus resultados, si usó los valores antes mencionados, debería ser esto:
21.7. Results For Clasificación¶
21.7.1. Refinar la clasificación¶
The settings you used might not be the same, but with the values
Classes = 6
and Mode = Natural Breaks
(Jenks) (and using the same colors, of course), the map will look like this:
21.8. Results For Creando un nuevo conjunto de datos vector¶
21.8.1. Digitalizar¶
La simbología no importa, pero los resultados deberían verse más o menos como esto:
21.8.2. Topología: Herramienta de agregar anillo¶
La forma exacta no importa, pero debería estar recibiendo un agujero en medio de su rasgo, como la siguiente:
Deshacer su edición antes de continuar con el ejercicio con la siguiente herramienta.
21.8.3. Topología: Herramienta de agregar parte¶
Primeiro selecione Bontebok National Park:
Ahora agregar su nueva parte:
Deshacer su edición antes de continuar con el ejercicio con la siguiente herramienta.
21.8.4. Unir objetos espaciales¶
Use la herramienta Merge Selected Features, para estar seguro, primero seleccione los poligonos que desee unir.
Use el rasgo con el OGC_FID de 1 como la fuente de sus atributos (clic en la entrada correspondiente de la ventana de dialogo, después clic en el botón Tomar los atributos del rasgo seleccionado):
Nota
- Si estas usando diferente conjunto de datos, es altamente probable que su
Polígono original OGC_FID no será 1. Solo tiene que elegir el rasgo que tiene un OGC_FID.
Nota
Usando la herramienta Unir atributos de los rasgos seleccionados mantendrá las distintas geometrías, pero les dará los mismo atributos.
21.8.5. Formas¶
Para el TIPO, hay obviamente un cantidad límite de tipos que una carretera puede tener, si revisa la tabla de atributos de la capa, verá que están predefinidos.
Establecer el widget a Valor del mapa y clic Cargar datos de la capa.
Seleccionar Carreteras in el Etiqueta desplegable y autopista para ambos las opciones de Valor y Descripción:
Click OK three times.
Si usa la herramienta Identificación en una calle mientras esta activo el modo edición, la ventana de dialogo que deberías ver será como esto:
21.9. Results For Análisis Vector¶
21.9.1. Distancia desde institutos¶
Su diálogo de buffer debería parecerse a esto:
A Distância do buffer é 1 quilômetro.
O valor Segmentos a serem aproximados está definido como 20. Isso é opcional, mas é recomendado, porque faz com que os buffers de saída pareçam mais suaves. Compare isto:
Com isso:
A primeira imagem mostra o buffer com o valor Segmentos a serem aproximados o valor definido como 5 e a segunda mostra o valor definido como 20 No nosso exemplo, a diferença é sutil, mas você pode ver que as bordas do buffer são mais suaves com o valor mais alto.
21.9.2. Distancia de restaurantes¶
Para criar a nova camada casas_restaurantes_500m, passamos por um processo de duas etapas:
Primero, crear un buffer de 500m alrededor de los restaurantes y agregar la capa al mapa:
Em seguida, extraia construções dentro dessa área de buffer:
Su mapa debe mostrar solo aquellos edificios que estén a menos de 50m de la carretera, 1 km de la escuela y 500m de un restaurante:
21.10. Results For Análise de Rede¶
21.11. *Caminho mais rápido *¶
Abra
e preencha a caixa de diálogo como:Certifique-se de que o Tipo de caminho a calcular seja Mais rápido
.
Clique em Executar e feche a caixa de diálogo.
Abra agora a tabela de atributos da camada de saída. O campo cost contém o tempo de viagem entre os dois pontos (como fração de horas):
21.12. Results For Análisis Raster¶
21.12.2. Calcular pendiente (menos de 2 y 5 grados)¶
Establezca su dialogo Calculadora Raster como esto:
Para a versão de 5 graus, substitua
2
na expressão e no nome do arquivo por5
.
Sus resultados:
2 grados:
5 grados:
21.13. Results For Completando el Análisis¶
21.13.1. de Raster a Vector¶
Abra o Construtor de Consultas clicando com o botão direito do mouse na camada all_terrain no painel Camadas e selecionando a opção :menuselecion:`Propridades --> Fonte`.
Después construir la consulta "suitable" = 1.
Clic OK para filtrar todos los polígonos que no cumplan con esa condición.
Cuando vea el raster original, el área debe sobreponerse perfectamente:
Você pode salvar esta camada clicando com o botão direito do mouse na camada all_terrain no painel Camadas e escolhendo Salvar como… e continue conforme as instruções.
21.13.2. Revisando los resultados¶
Podrá notar que algunos de los edificios en su capa nueva_solución han sido “cortados” por la herramienta Intersectar. Esto muestra que sólo parte del edificio -y por lo tanto solamente parte de la propiedad- se ubica en un terreno adecuado. Podemos entonces con seguridad eliminar esos edificios de nuestro Conjunto de datos.
21.13.3. Afinando el Análisis¶
Por el momento, su análisis deberá verse más o menos así:
Considera un área circular, con 100 metros a la redonda
Si es más grande que 100 metros de radio, entonces extraer 100 metros de su tamaño (en todas las direcciones) resultará en que una parte de el quede sobrante en el medio.
Por lo tanto, puede ejecutar un buffer interior de 100 metros en su capa vectorial existente terreno_apto. En el resultado de la aplicación de la función buffer, lo que sea que quede en la capa original representará áreas en donde hay terreno apto más allá de los 100.
Para demostrar:
Ir a
para abrir el diálogo de Buffer(s).Configúralo así:
Use la capa terreno_apto con 10 segmentos y una distancia de buffer de -100. (La distancia es automáticamente reconocida en metros debido a que su mapa está usando un SRC proyectado).
Guarda la capa resultante en datos_ejercicio/desarrollo_residencial/ como terreno_apto_continuos100m.shp.
Si es necesario, mueva la nueva capa encima de su capa original terreno_apto.
Sus resultados se verán más o menos así:
Ahora utilice la herramienta Selección por ubicación ( ).
Configurar de la siguiente manera:
Seleccione elementos en nueva_solución que intersecte elementos de terreno_apto_continuos100m.shp.
Este es el resultado:
Los edificios en color amarillo están seleccionados. Aunque algunos de los edificios caen parcialmente afuera de la nueva capa terreno_apto_continuos100m.shp, caen bien dentro de la capa original terreno_apto y por lo tanto cumplen con todos nuestros requerimientos.
Guarde la selección en datos_ejercicio/desarrollo_residencial/ con el nombre respuesta_final.shp.
21.14. Results For WMS¶
21.14.1. |FA| Cargar otra Capa WMS¶
Su mapa debería verse así (puede que necesite re-ordenar las capas):
21.14.2. Adicionando um Novo 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:
Si realiza un acercamiento en el área Swellendam, notará que este conjunto de datos tiene una baja resolución.
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.
21.14.3. Adicionando um Novo Servidor WMS¶
Você vai perceber que muitos servidores WMS nem sempre estão disponíveis. Às vezes isso é temporário, às vezes é permanente. Um exemplo de servidor WMS que funcionava no momento da redação deste artigo é o World Mineral Deposits WMS em http://apps1.gdr.nrcan.gc.ca/cgi-bin/worldmin_en-ca_ows. Ele não exige taxas ou tem restrições de acesso e é global. Portanto, ele atende aos requisitos. No entanto, lembre-se de que isso é apenas um exemplo. Existem muitos outros servidores WMS para você escolher.
21.15. Results For Integração GRASS¶
21.15.1. Adicionar Camadas ao Mapa¶
Você pode adicionar camadas (vetorial e raster) a um GRASS Mapset arrastando e soltando-as no navegador (veja :ref: grass_browser) ou usando o v.in.gdal.qgis
para camadas vetoriais e r.in.gdal.qgis
para camadas raster.
21.15.2. Reclassifique a camada raster¶
Para descobrir o valor máximo do raster, execute a ferramenta r.info: no console, você verá que o valor máximo é 1699.
Agora você está pronto para escrever as regras. Abra um editor de texto e adicione as seguintes regras:
0 thru 1000 = 1
1000 thru 1400 = 2
1400 thru 1699 = 3
salve o arquivo como my_rules.txt
e feche o editor de texto.
Execute a ferramenta r.reclass, escolha a camada g_dem e carregue o arquivo que contém as regras que você acabou de salvar.
Clique em Executar e depois em Exibir Saída. Você pode alterar as cores e o resultado final deve se parecer com a seguinte imagem:
21.16. Results For Conceptos de Bases de Datos¶
21.16.1. 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
21.16.2. Normalizando la Tabla de Personas¶
El mayor problema con la capa de gente es que hay solo un campo de dirección que contiene los datos de domicilio de las personas. Pensando en nuestra tabla teórica direccion anteriormente en esta lección, sabemos que una dirección esta compuesta por varias propiedades. Mediante el almacenamiento de todas estas propiedades en un solo campo, con esto haremos mucho mas difícil la actualización y la consulta de nuestros datos. Por lo tanto tenemos que dividir el campo de dirección en varias propiedades. Esto nos daría una tabla que tenga las 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.
21.16.3. 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 de 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 de 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í:
21.16.4. Crear una tabla de Personas¶
El 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 );
O esquema para a tabela (digite \d people) será parecido com o seguinte:
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
Para fines de ilustración, hemos omitido a propósito la restricción del fkey.
21.16.5. El comando DROP¶
El motivo del comando DROP no funcionaría en este caso, porque la tabla personas tiene un restricción de llave foránea para la tabla calles. Esto significa que dropping (o eliminar) la tabla de calles dejaría a la tabla de personas con las referencias a calles de datos no existentes.
Nota
Es posible para ‘fuerza’ la tabla de calles para ser eliminado mediante el uso del comando CASCADE, pero también se eliminaría la tabla de personas y alguna otra que tenga relación con la tabla calles. ¡Utilizar con precaución!
21.16.6. Insertar una nueva calle¶
El comando SQL, que debe usar se ve así (puede reemplazar el nombre de la calle con uno de su elección):
insert into streets (name) values ('Low Road');
21.16.7. Agregar una nueva persona con relación de llave foránea¶
Aquí esta 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 en la tabla de calles nuevamente (utilizando una sentencia select como antes), vera que el id de la entidad Carretera Principal es 2.
Eso es por qué podríamos solo introducir el numero 2 arriba. 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
Se você já adicionou um novo objeto Estrada, você pode achar que o novo Estrada Principal tem o ID 3 não 2.
21.16.8. Regresar 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
Você vai notar que temos prefixado nomes dos campos com nomes de tabela (por exemplo pessoas.name e streets.name). Isso precisa ser feito sempre que o nome do campo (ou seja, não exclusivo em todas as tabelas no banco de dados) for ambíguo.
21.17. Results For Consultas Espaciales¶
21.17.1. Las unidades usadas en Consultas Espaciales¶
Las unidades usadas para el ejemplo de consulta son grados, porque el SRC que la capa esta usando es WGS84. Este es un SRC Geografico, que significa que las unidades están en grados. Un proyecto SRC, como la proyección UTM que esta en metros.
Recuerde que cuando escriba la consulta, necesita saber en que unidades esta el SRC de la capa. Esto te permitirá escribir una consulta que regrese los resultados que tu esperas.
21.17.2. Creando un índice espacial¶
CREATE INDEX cities_geo_idx
ON cities
USING gist (the_geom);
21.18. Results For Construcion de geometría¶
21.18.1. 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);
21.18.2. “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 empezar de nuevo. Vea las entradas de su tabla de ciudades y use cualquier id que exista.
21.19. Results For Modelo de características simples¶
21.19.1. 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 );
21.19.2. Llenar la tabla Geometria_Columnas¶
insert into geometry_columns values
('','public','cities','the_geom',2,4326,'POLYGON');
21.19.3. 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 limitación permite agregar nulos en la base de datos.