20. Fișă de răspunsuri

20.1. Results For Adăugarea Primului Dvs. Strat

20.1.1. basic Pregătire

Ar trebui să vedeți o mulțime de linii, simbolizând drumuri. Toate aceste linii se află în stratul vectorial pe care tocmai l-ați încărcat pentru a crea o hartă de bază.

Înapoi la textul

20.2. Results For O privire de ansamblu asupra interfeței

20.2.1. basic Vedere Generală (Partea 1)

Consultați iarăși imaginea care prezintă aspectul interfeței și verificați dacă vă amintiți numele și funcțiile elementelor de pe ecran.

Înapoi la textul

20.2.2. basic Vedere Generală (Partea a 2-a)

  1. Salvare ca

  2. Transfocare pe Strat

  3. Ajutor

  4. :guilabel:`Randare activată/dezactivată

  5. Măsurare Linie

Înapoi la textul

20.3. Results For Lucrul cu Datele Vectoriale

20.3.1. basic Fișiere shape

Ar trebui să existe cinci straturi pe hartă:

  • locații

  • apă

  • clădiri

  • râuri și

  • drumuri.

Înapoi la textul

20.3.2. basic Baze de date

Toate straturile vectoriale ar trebui să fie încărcate în hartă. Probabil că nu va arăta frumos încă (vom înlocui culorile urâte mai târziu).

Înapoi la textul

20.4. Results For Symbologie

20.4.1. basic Culori

  • Verificați dacă puteți schimba culorile după dorință.

  • Este suficient să schimbați doar stratul apă pentru moment. Mai jos există un exemplu, dar acesta poate arăta diferit, în funcție de culoarea aleasă.

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

Note

Dacă doriți să lucrați asupra unui singur strat la un moment dat, și nu doriți ca alte straturi să vă distragă atenția, puteți ascunde un strat făcând clic pe caseta de validare din dreptul numelui său, în lista de Straturi. În cazul în care caseta este nebifată, atunci stratul este ascuns.

Înapoi la textul

20.4.2. basic Structura Simbolului

Harta ar trebui să arate așa:

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

Dacă sunteți la nivelul de Utilizator Începător, v-ați putea opri aici.

  • Utilizați metoda de mai sus pentru a schimba culorile și stilurile pentru toate straturile rămase.

  • Încercați să folosiți culori naturale pentru obiecte. De exemplu, un drum nu ar trebui să fie de culoare roșie sau albastră, dar poate fi de culoare gri sau neagră.

  • De asemenea, nu ezitați să experimentați cu diferite setări de Stil de Umplere și Stil de Margine pentru poligoane.

Înapoi la textul

20.4.3. moderate Straturile Simbolului

  • Personalizați-vă stratul de clădiri așa cum doriți, dar nu uitați că trebuie să fie ușor să distingeți diferitele straturi de pe hartă.

Iată un exemplu:

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

Înapoi la textul

20.4.4. moderate Nivelurile Simbolului

Pentru a crea simbolul necesar, aveți nevoie de două straturi de simboluri:

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

Stratul inferior al simbolului este o linie solidă, galbenă. În partea superioară a acestuia este o linie de culoare gri, solidă, ceva mai subțire.

  • Dacă straturile simbol seamănă cu cele de mai sus, dar nu obțineți rezultatul pe care îl doriți, verificați dacă nivelurile simbolului arată în genul următor:

    ../../../_images/answer_road_symbol_levels.png
  • Acum, harta ar trebui să arate în felul următor:

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

Înapoi la textul

20.4.5. hard Nivelurile Simbolului

  • Ajustați nivelurile simbolurilor la aceste valori:

../../../_images/answer_road_symbol_layers.png
  • Experimentați cu valori diferite, pentru a obține rezultate diferite.

  • Deschideți iarăși harta originală, înainte de a continua cu exercițiul următor.

Înapoi la textul

20.5. Atributele Datelor Results For

20.5.1. basic Atributele Datelor

Câmpul NUME este cel mai folositor pentru a afișa etichetele. Acest lucru se datorează faptului că toate valorile sunt unice pentru fiecare obiect, și este foarte puțin probabil să conțină valori NULL. Dacă datele dvs. conțin unele valori NULL, nu vă faceți griji, atât timp cât cea mai mare parte din locațiile dvs. au nume.

Înapoi la textul

20.6. Results For Instrumentul Etichetă

20.6.1. moderate Personalizarea Etichetelor (Partea 1)

Harta ar trebui să prezinte acum punctele marcajelor și ale etichetelor decalate cu 2.0 mm: Stilul marcajelor și al etichetelor trebuie să permită observarea pe hartă a ambelor, cu claritate:

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

Înapoi la textul

20.6.2. moderate Personalizarea Etichetelor (Partea a 2-a)

O soluție posibilă o reprezintă acest produs final:

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

Pentru a ajunge la acest rezultat:

  • Utilizați o dimensiune a fontului de 10, o Distanță a etichetei de 1,5 mm, Lățimea simbolului and Înălțimea simbolului de 3.0 mm.

  • În plus, acest exemplu folosește opțiunea de Încadrare a etichetei după caracter:

    ../../../_images/wrap_character_settings.png
  • Introduceți un spațiu în acest câmp și faceți clic pe Apliccare, pentru a obține același efect. În cazul nostru, unele dintre numele de locuri sunt foarte lungi, rezultând astfel nume cu linii multiple, ceea ce nu este foarte plăcut. ți putea găsi această setare, ca fiind mult mai adecvată pentru harta dvs.

Înapoi la textul

20.6.3. hard Utilizarea Setărilor Definite cu ajutorul Datelor

  • Fiind încă în modul de editare, setați valorile FONT_SIZE după dorință. În exemplu se folosesc 16 pentru orașe, 14 pentru suburbii, 12 pentru comune și 10 pentru sate.

  • Amintiți-vă să salvați modificările și să ieșiți din modul de editare.

  • Întoarceți-vă la opțiunile de formatare ale Textului pentru stratul locații și selectați FONT_SIZE în Câmpul atribut al meniului de suprascriere a dimensiunii fontului:

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

    Rezultatele, dacă se utilizează valorile de mai sus, ar trebui să fie următoarele:

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

Înapoi la textul

20.7. Results For Clasificare

20.7.1. moderate Rafinarea Clasificării

  • Folosiți aceeași metodă ca și în primul exercițiu al lecției, pentru a scăpa de frontiere:

    ../../../_images/gradient_map_no_pen.png

Setările pe care le utilizați pot să nu fie similare, dar cu valorile pentru Clase = 6 și Mod = Intervale Naturale (Jenks) (și folosind aceleași culori, desigur), harta va arăta astfel:

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

Înapoi la textul

20.8. Results For Crearea unui Nou Set de Date Vectoriale

20.8.1. basic Digitizare

Simbolistica nu contează, dar rezultatele ar trebui să arate mai mult sau mai puțin ca acesta:

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

Înapoi la textul

20.8.2. moderate Topologia: Adăugarea Instrumentului Inel

Forma exactă nu contează, dar ar trebui să fie obțineți o gaură în mijlocul entității dvs., ca aceasta:

../../../_images/ring_tool_result.png
  • Anulați editările dumneavoastră înainte de a continua exercițiul pentru instrumentul următor.

Înapoi la textul

20.8.3. moderate Topologia: Adăugarea Instrumentului Parte

  • Mai întâi selectați Bontebok National Park:

../../../_images/park_selected.png
  • Acum, adăugați noua parte:

../../../_images/new_park_area.png
  • Anulați editările dumneavoastră înainte de a continua exercițiul pentru instrumentul următor.

Înapoi la textul

20.8.4. hard Îmbinare Entități

  • Folosiți instrumentul de Îmbinare a Entităților Selectate, asigurându-vă că ați selectat mai întâi ambele poligoane pe care doriți să le îmbinați.

  • Utilizați entitatea cu OGC_FID-ul 1 ca sursă pentru atributele dvs. (clic pe intrările sale din dialog, apoi faceți clic pe butonul Preia atributele din entitatea selectată):

Note

Dacă utilizați un set de date diferit, este foarte probabil ca

OGC_FID-ul original al poligonului dvs. să nu fie 1. E suficient să alegeți entitatea care are un OGC_FID.

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

Note

Folosind instrumentul de Îmbinare a Entităților Selectate,vom păstra geometriile distincte, dar le vom acorda aceleași atribute.

Înapoi la textul

20.8.5. moderate Formulare

Pentru TIP există, în mod evident, o cantitate limitată de tipuri de drumuri, iar dacă veți verifica tabelul de atribute pentru acest strat, veți vedea că acestea sunt predefinite.

  • Setați widget-ul la Valorile Hărții apoi faceți clic pe Încărcare Date din Strat.

  • Selectați drumurile din caseta cu derulare verticală a Etichetelor și autostrăzile pentru opțiunile Valoare și Descriere:

    ../../../_images/value_map_settings.png
  • Faceți clic pe Ok de trei ori.

  • Dacă veți folosi instrumentul Identificare asupra unei străzi, în timp ce modul de editare este activ, dialogul ar trebui să arate astfel:

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

Înapoi la textul

20.9. Results For Analiza Vectorială

20.9.1. moderate Extrageți Straturile dvs. din Datele OSM

În scopul acestui exercițiu, straturile OSM care ne interesează sunt multipoligoane și linii. Stratul multipoligoane conține datele de care avem nevoie pentru a produce straturile case, școli și restaurante. Stratul linii conține setul de date pentru drumuri.

Constructorul de Interogări se găsește în proprietățile stratului:

../../../_images/query_builder.png

Folosind Constructorul de Interogări asupra stratului multipoligoane, creați următoarele interogări pentru straturile case, școli, restaurante și rezidențiale.

../../../_images/houses_query.png ../../../_images/schools_query.png ../../../_images/restaurants_query.png

După ce ați introdus fiecare interogare, faceți clic pe OK. Veți vedea că harta actualizată afișează numai datele pe care le-ați selectat. Din moment ce trebuie să utilizați iarăși datele multipoligoanelor din setul de date OSM, în acest moment, aveți posibilitatea să utilizați una dintre următoarele metode:

  • Redenumirea stratului OSM filtrat, și re-importarea stratului din osm_data.osm, SAU

  • Duplicarea stratului filtrat, redenumirea copiei, ștergea interogării și crearea noii dvs. interogări în Constructorul de Interogări.

Note

Deși câmpul OSM clădiri are valoarea case, acoperirea din zona dumneavoastră - la fel ca și în cazul nostru - nu poate fi completă. În regiunea noastră de test, prin urmare, este mai corect să se excludă toate clădirile care sunt definite ca orice altceva decât casă. Ați putea decide să includeți doar clădirile care sunt definite sub formă de casă, și toate celelalte valori care nu au o semnificație clară, cum ar fi da.

Pentru a crea stratul drumuri, rulați această interogare asupra stratului OSM linii:

../../../_images/roads_query.png

Ar trebui să obțineți o hartă care arată similar cu următoarea:

../../../_images/osm_queries_result.png

Înapoi la textul

20.9.2. basic Distanța față de Licee

  • Dialogul tamponului dvs. ar trebui să arate astfel:

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

    Distanța tamponului este de 1000 metri (adică, 1 kilometru).

  • Valoarea Segmentelor de aproximat este setată la 20. Aceasta este opțională, dar este recomandată, deoarece face tampoanele rezultate să arate mai fin. Comparați aceasta:

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

    Cu aceasta:

    ../../../_images/schools_buffer_20.png

Prima imagine prezintă un tampon cu valoarea Segmentelor de aproximat setată la 5, iar a doua arată valoarea setată la 20. În exemplul nostru, diferența este subtilă, dar puteți vedea că marginile Tamponului sunt mai fine o dată cu valoarea mai mare.

Înapoi la textul

20.9.3. basic Distanța față de Restaurante

Pentru a crea stratul houses_restaurants_500m, trecem printr-un proces cu doi pași:

  • În primul rând, creați un tampon de 500 de metri în jurul restaurantelor și adăugați stratul la hartă:

    ../../../_images/restaurants_buffer.png ../../../_images/restaurants_buffer_result.png
  • Apoi selectați clădirile din zona tamponului:

    ../../../_images/select_within_restaurants.png
  • Acum, salvați acea selecție în noul strat houses_restaurants_500m:

    ../../../_images/save_selection_restaurants.png

Harta dvs. ar trebui să arate acum numai acele clădiri care sunt la 50 m față de drum, la 1 km de o școală și la 500 m de un restaurant:

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

Înapoi la textul

20.10. Results For Analiza Raster

20.10.1. basic Calculare Aspect

  • Setați dialogul DEM (Analizei Terenului) în felul următor:

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

Rezultatul dvs.:

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

Înapoi la textul

20.10.2. moderate Calculează Panta (mai puțin de 2 sau de 5 grade)

  • Setați dialogul Calculatorului Raster în felul următor:

    ../../../_images/answer_raster_calculator_slope.png
  • Pentru versiunea de 5 grade, folosiți 2 în expresie și numele de fișier 5.

Rezultatele dvs.:

  • 2 grade:

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

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

Înapoi la textul

20.11. Results For Completarea Analizei

20.11.1. moderate Din Raster în Vector

  • Deschideți Constructorul de Interogări făcând clic dreapta pe stratul all_terrain din Lista straturilor, apoi selectați fila Dispoziții generale.

  • Apoi construiți interogarea kbd:“suitable” = 1.

  • Clic pe OK pentru a filtra toate poligoanele în care această condiție nu este îndeplinită.

Atunci când sunt puse deasupra rasterului original, zonele trebuie să se suprapună perfect:

../../../_images/polygonize_raster.png
  • Puteți salva acest strat făcând clic dreapta pe stratul all_terrain din Lista straturilor și alegeți Save As..., apoi continuați conform instrucțiunilor.

Înapoi la textul

20.11.2. moderate Inspectarea Rezultatelor

Puteți observa că unele dintre clădirile din dumneavoastră din stratul new_solution au fost “feliate” de instrumentul Intersectare. Acest lucru arată că doar o parte a clădirii - și, prin urmare, doar o parte a proprietății - se află pe terenul potrivit. Prin urmare, putem elimina sensibil acele clădiri din setul nostru de date

Înapoi la textul

20.11.3. moderate Rafinarea Analizei

Pentru moment, analiza dvs. ar trebui să arate în felul următor:

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

Luați în considerare o zonă circulară, continuă pentru 100 de metri, în toate direcțiile.

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

În cazul în care raza este mai mare de 100 de metri, prin scăderea a 100 de metri din dimensiunea sa (din toate direcțiile) va rezulta o parte care rămâne în mijloc.

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

Prin urmare, puteți rula un tampon interior de 100 de metri pe stratul vectorial existent suitable_terrain. În rezultatul funcției tampon, indiferent de ceea ce a mai rămas din stratul original, se vor reprezenta zonele în care există teren potrivit pentru 100 de metri în orice direcție.

Pentru demonstrație:

  • Mergeți la Vector ‣ Geoprocessing Tools ‣ Buffer(s) pentru a deschide diaolgul Tampo(anelor).

  • Setați-l astfel:

    ../../../_images/suitable_terrain_buffer.png
  • Folosiți stratul suitable_terrain cu 10 segmente și o distanță a tamponului de -100. (Distanța este în mod automat în metri, deoarece harta folosește un CRS proiectat.)

  • Salvați rezultatul în exercise_data/residential_development/ ca suitable_terrain_continuous100m.shp.

  • Dacă este necesar, mutați noul strat deasupra stratului original suitable_terrain.

Rezultatele dvs. vor arăta în felul următor:

../../../_images/suitable_buffer_results.png
  • Acum, folosiți instrumentul Selectare după by Locație (Vector ‣ Research Tools ‣ Select by location).

  • Setați-l astfel:

    ../../../_images/select_by_location.png
  • Selectați entitățile din new_solution care le intersectează pe cele din suitable_terrain_continuous100m.shp.

Acesta este rezultatul:

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

Sunt selectate clădirile galbene. Deși unele dintre clădiri cad parțial în afara noului strat suitable_terrain_continuous100m, ele se află la fel de bine și în stratul original suitable_terrain și, prin urmare, îndeplinesc toate cerințele noastre.

  • Salvați selecția în exercise_data/residential_development/ ca final_answer.shp.

Înapoi la textul

20.12. Results For WMS

20.12.1. basic Adăugarea Altui Strat WMS

Harta dvs. ar trebui să arate astfel (este posibil să fie necesară reordonarea straturilor):

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

Înapoi la textul

20.12.2. moderate Adăugarea unui Nou Server WMS

  • Utilizați aceeași abordare ca și mai înainte pentru a adăuga noul server, și stratul corespunzător, așa cum este găzduit pe acel server:

    ../../../_images/add_ogc_server.png ../../../_images/add_bluemarble_layer.png
  • Dacă ați transfocat în zona | majorUrbanName |, veți observa că acest set de date are o rezoluție mică:

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

Prin urmare, este mai bine să nu utilizați aceste date pentru harta curentă. Datele Blue Marble sunt mult mai potrivite la scări globale sau naționale.

Înapoi la textul

20.12.3. moderate Găsirea unui Server WMS

Puteți observa că multe servere WMS nu sunt întotdeauna disponibile. Uneori, acest lucru este temporar, uneori este permanent. Un exemplu de server WMS care era funcțional la momentul scrierii acestui articol este WMS-ul Lumea Depozitelor Minerale de la http://apps1.gdr.nrcan.gc.ca/cgi-bin/worldmin_en-ca_ows. Nu există taxe sau constrângeri de acces și este global. Prin urmare, aceasta satisface cerințele. Rețineți, totuși, că acesta este doar un exemplu. Există multe alte servere WMS dintre care puteți alege.

Înapoi la textul

20.13. Results For Noțiuni despre Bazele de date

20.13.1. basic Adresarea Tabelei de Properietăți

Pentru tabela noastră teoretică de adresare, am putea dori să stocheze următoarele proprietăți:

House Number
Street Name
Suburb Name
City Name
Postcode
Country

La crearea tabelului pentru reprezentarea unui obiect adresă, vom crea coloane pentru a reprezenta fiecare dintre aceste proprietăți și le vom denumi cu nume acceptate de SQL și, eventual, scurtate:

house_number
street_name
suburb
city
postcode
country

Înapoi la textul

20.13.2. basic Normalizarea Tabelei de Personal

Problema majoră a tabelei people rezidă în inexistența unui câmp de adresă singular, care să conțină întreaga adresă a unei persoane. Gândindu-ne la tabela noastră teoretică address de la începutul acestei lecții, știm că o adresă este formată din mai multe proprietăți diferite. Prin stocarea tuturor acestor proprietăți într-un singur câmp, am îngreuna mult actualizarea și interogarea datelor noastre. Prin urmare, trebuie să divizăm câmpul de adresă în diferite proprietăți. Va rezulta, astfel, un tabel cu următoarea structură:

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

Note

În secțiunea următoare, veți învăța despre relațiile cheilor externe, care ar putea fi utilizate în acest exemplu, pentru a îmbunătăți în continuare structura bazei noastre de date.

Înapoi la textul

20.13.3. basic Normaliarea Suplimentară a Tabelei de Personal

Tabela noastră de personal arată, în mod curent, astfel:

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

Coloana street_id reprezintă o relație ‘una la mai multe’ între obiectul people și obiectul street, care este în tabela streets.

O modalitate de a normaliza și mai mult tabela este de a împărți câmpul în prenume și nume:

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

Putem crea, de asemenea, tabele separate pentru numele orașului și al țării, corelându-le cu tabela noastră people, prin intermediul relațiilor ‘una la multe’:

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

O diagramă ER care reprezintă acest lucru ar putea arăta astfel:

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

Înapoi la textul

20.13.4. moderate Crearea Tabelei de Personal

SQL-ul necesar creării tabelei de personal corecte este:

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 );

Schema pentru tabel (introduceți \d personal) arată astfel:

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)

Note

În scop ilustrativ, intenționat am omis constrângerea fkey.

Înapoi la textul

20.13.5. basic Commanda DROP

Motivul pentru care comanda DROP nu ar funcționa în acest caz se datorează faptului că tabela people are o constrângere de Cheie Externă în tabela streets. Acest lucru înseamnă că eliminarea (sau ștergerea) tabelei streets ar lăsa tabela people cu referințe către date inexistente despre străzi.

Note

Este posibil să ‘forțăm’ ștergerea tabelului streets cu ajutorul comenzii CASCADE, dar acest lucru ar elimina, de asemenea, tabela people și oricare alta care a avut o relație cu tabela` streets`. Utilizați-o cu prudență!

Înapoi la textul

20.13.6. basic Inserarea unei Noi Străzi

Comanda SQL pe care ar trebui să o utilizați arată astfel (puteți înlocui numele străzii cu altul, la alegere):

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

Înapoi la textul

20.13.7. moderate Adăugarea unei Noi Persoane Cu Relația Cheii Externe

Aici este instrucțiunea SQL corectă:

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');

Dacă priviți iarăși la tabela străzilor (folosind o instrucțiune SELECT ca mai înainte), veți vedea că id-ul pentru intrarea Drumului Principal este 2.

De aceea, am putea mai degrabă doar să introducem numărul 2 de mai sus. Chiar dacă nu vedem Main Road scris integral în intrarea de mai sus, baza de date va fi capabilă să se asocieze valoarea street_id cu 2.

Note

Dacă ați adăugat deja un nou obiect street, ați putea descoperi că noul Drum Principal are ID-ul 3 nu 2.

Înapoi la textul

20.13.8. moderate Returnează Numele Străzilor

Aici este instrucțiunea SQL corectă, pe care ar trebui să o folosiți:

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

Rezultatul:

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

Note

Veți observa că am prefixat numele câmpurilor cu numele tabelei (de exemplu, people.name și streets.name). Acest lucru trebuie să fie făcut de fiecare dată când numele câmpului este ambiguu (de exemplu, când nu este unic în toate tabelele din baza de date).

Înapoi la textul

20.14. Results For Interogări spaţiale

20.14.1. basic Unitățile Folosite în Interogările Spațiale

Unitățile utilizate de interogarea din exemplu sunt în grade, deoarece CRS-ul pe care îl folosește stratul este WGS 84. Acesta este un CRS Geografic, ceea ce înseamnă că unitățile sale sunt în grade. Un CRS proiectat, similar proiecțiilor UTM, este în metri.

Amintiți-vă că, atunci când scrieți o interogare, trebuie să cunoașteți CRS-ul stratului. Acest lucru vă va permite să scrieți o interogare care va returna rezultatele pe care le așteptați.

Înapoi la textul

20.14.2. basic Crearea unui Index Spațial

CREATE INDEX cities_geo_idx
  ON cities
  USING gist (the_geom);

Înapoi la textul

20.15. Results For Construirea Geometriei

20.15.1. moderate Crearea Șirurilor de Linii

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);

Înapoi la textul

20.15.2. moderate Legarea Tabelelor

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

(captura orașelor în 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)');

Dacă ați obținut următorul mesaj de eroare:

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".

atunci înseamnă că în timp ce experimentați crearea poligoanelor pentru tabela orașelor, trebuie să fi șters unele dintre ele și să fi reînceput. Doar verificați intrările din tabelul de orașe și folosiți orice id care există.

Înapoi la textul

20.16. Results For Modelul Entității Simple

20.16.1. moderate Popularea Tabelelor

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 );

Înapoi la textul

20.16.2. moderate Popularea Tabelei Geometry_Columns

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

Înapoi la textul

20.16.3. hard Adăugarea Geometriei

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

Rezultatul:

     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)

După cum puteți vedea, constrângerea noastră permite null-uri care urmează să fie adăugate în baza de date.

Înapoi la textul