21. Fișă de răspunsuri

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

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

Back to text

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

  1. Salvare ca

  2. Transfocare pe Strat

  3. Invert selection

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

  5. Măsurare Linie

Back to text

21.2. Results For Adăugarea Primului Dvs. Strat

21.2.1. basic Pregătire

In the main area of the dialog you should see many shapes with different colors. Each shape belongs to a layer you can identify by its color in the left panel (your colors may be different from the ones below):

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

Back to text

21.2.2. basic Data loading

Your map should have seven layers:

  • protected_areas

  • locații

  • rivers

  • roads

  • landuse

  • buildings (taken from training_data.gpkg) and

  • water (taken from exercise_data/shapefile).

Înapoi la text

21.3. Results For Symbologie

21.3.1. basic Culori

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

  • It is enough to select the water layer in the legend and then click on the symbology Open the Layer Styling panel button. Change the color to one that fits the water layer.

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

Notă

If you want to work on only one layer at a time and don’t want the other layers to distract you, you can hide a layer by clicking in the checkbox next to its name in the layers list. If the box is blank, then the layer is hidden.

Back to text

21.3.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ă.

  • Also feel free to experiment with different Fill style and Stroke style settings for the polygons.

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

Back to text

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

Back to text

21.3.4. moderate Nivelurile Simbolului

To make the required symbol, you need three symbol layers:

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

The lowest symbol layer is a broad, solid gray line. On top of it there is a slightly thinner solid yellow line and finally another thinner solid black line.

If your symbol layers resemble the above but you’re not getting the result you want:

  1. Check that your symbol levels look something like this:

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

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

Back to text

21.3.5. hard Nivelurile Simbolului

  1. Ajustați nivelurile simbolurilor la aceste valori:

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

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

Back to text

21.4. moderate Outline Markers

Here are examples of the symbol structure:

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

Înapoi la text

21.4.1. hard Geometry generator symbology

  • Click on the signPlus button to add another Symbol level.

  • Move the new symbol at the bottom of the list clicking the arrowDown button.

  • Choose a good color to fill the water polygons.

  • Click on Marker of the Geometry generator symbology and change the circle with another shape as your wish.

  • Try experimenting other options to get more useful results.

Înapoi la text

21.5. Results For Vector Attribute Data

21.5.1. basic Exploring Vector Data Attributes

  • There should be 9 fields in the rivers layer:

    1. Select the layer in the Layers panel.

    2. Right-click and choose Open Attribute Table, or press the openTable button on the Attributes Toolbar.

    3. Count the number of columns.

    Sfat

    A quicker approach could be to double-click the rivers layer, open the Layer properties ► Fields tab, where you will find a numbered list of the table’s fields.

  • Information about towns is available in the places layer. Open its attribute table as you did with the rivers layer: there are two features whose place attribute is set to town: Swellendam and Buffeljagsrivier. You can add comment on other fields from these two records, if you like.

  • The name field is the most useful to show as labels. This is because all its values are unique for every object and are very unlikely to contain NULL values. If your data contains some NULL values, do not worry as long as most of your places have names.

Înapoi la text

21.6. Results For Labels

21.6.1. moderate Personalizarea Etichetelor (Partea 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:

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

Back to text

21.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:

  • 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:

    ../../../_images/wrap_character_settings.png
  • 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.

Back to text

21.6.3. hard Utilizarea Setărilor Definite cu ajutorul Datelor

  1. Still in edit mode, set the FONT_SIZE values to whatever you prefer. The example uses 16 for towns, 14 for suburbs, 12 for localities, and 10 for hamlets.

  2. Remember to save changes and exit edit mode

  3. Return to the Text formatting options for the places layer and select FONT_SIZE in the Attribute field of the font size dataDefined data defined override dropdown:

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

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

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

Back to text

21.7. Results For Clasificare

21.7.1. moderate Rafinarea Clasificării

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:

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

Back to text

21.8. Results For Crearea unui Nou Set de Date Vectoriale

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

Back to text

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

Back to text

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

Back to text

21.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ă):

Notă

If you’re using a different dataset, it is highly likely that your original polygon’s OGC_FID will not be 1. Just choose the feature which has an OGC_FID.

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

Notă

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

Back to text

21.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
  • Click OK three times.

  • 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

Back to text

21.9. Results For Analiza Vectorială

21.9.1. basic Distanța față de Licee

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

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

    The Buffer distance is 1 kilometer.

  • The Segments to approximate value is set to 20. This is optional, but it’s recommended, because it makes the output buffers look smoother. Compare this:

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

    Cu aceasta:

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

The first image shows the buffer with the Segments to approximate value set to 5 and the second shows the value set to 20. In our example, the difference is subtle, but you can see that the buffer’s edges are smoother with the higher value.

Back to text

21.9.2. basic Distanța față de Restaurante

To create the new houses_restaurants_500m layer, we go through a two step process:

  • Î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
  • Next, extract buildings within that buffer area:

    ../../../_images/select_within_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

Back to text

21.10. Results For Network Analysis

21.11. moderate Fastest path

Open Network Analysis ► Shortest Path (Point to Point) and fill the dialog as:

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

Make sure that the Path type to calculate is Fastest.

Click on Run and close the dialog.

Open now the attribute table of the output layer. The cost field contains the travel time between the two points (as fraction of hours):

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

Înapoi la text

21.12. Results For Analiza Raster

21.12.1. basic Calculare Aspect

  • Set your Aspect dialog up like this:

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

Rezultatul dvs.:

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

Back to text

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

  • Set your Raster calculator dialog up with:

    • the following expression: slope@1 <= 2

    • the slope layer as the Reference layer(s)

    ../../../_images/answer_raster_calculator_slope.png
  • For the 5 degree version, replace the 2 in the expression and file name with 5.

Rezultatele dvs.:

  • 2 grade:

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

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

Back to text

21.13. Results For Completarea Analizei

21.13.1. moderate Din Raster în Vector

  1. Open the Query Builder by right-clicking on the all_terrain layer in the Layers panel, and selecting the Properties ► Source tab.

  2. Then build the query "suitable" = 1.

  3. 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
  4. You can save this layer by right-clicking on the all_terrain layer in the Layers panel and choosing Save As…, then continue as per the instructions.

Back to text

21.13.2. moderate Inspectarea Rezultatelor

You may notice that some of the buildings in your new_solution layer have been „sliced” by the Intersection tool. This shows that only part of the building - and therefore only part of the property - lies on suitable terrain. We can therefore sensibly eliminate those buildings from our dataset.

Back to text

21.13.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:

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

  2. Setați-l astfel:

    ../../../_images/suitable_terrain_buffer.png
  3. Use the suitable_terrain layer with 10 segments and a buffer distance of -100. (The distance is automatically in meters because your map is using a projected CRS.)

  4. Save the output in exercise_data/residential_development/ as suitable_terrain_continuous100m.shp.

  5. If necessary, move the new layer above your original suitable_terrain layer.

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

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

  7. Setați-l astfel:

    ../../../_images/select_by_location.png
  8. 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

    The yellow buildings are selected. Although some of the buildings fall partly outside the new suitable_terrain_continuous100m layer, they lie well within the original suitable_terrain layer and therefore meet all of our requirements.

  9. Save the selection under exercise_data/residential_development/ as final_answer.shp.

Back to text

21.14. Results For WMS

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

Back to text

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

Back to text

21.14.3. moderate Găsirea unui Server WMS

You may notice that many WMS servers are not always available. Sometimes this is temporary, sometimes it is permanent. An example of a WMS server that worked at the time of writing is the World Mineral Deposits WMS at http://apps1.gdr.nrcan.gc.ca/cgi-bin/worldmin_en-ca_ows. It does not require fees or have access constraints, and it is global. Therefore, it does satisfy the requirements. Keep in mind, however, that this is merely an example. There are many other WMS servers to choose from.

Back to text

21.15. Results For GRASS Integration

21.15.1. basic Add Layers to Mapset

You can add layers (both vector and raster) into a GRASS Mapset by drag and drop them in the Browser (see Follow Along: Load data using the QGIS Browser) or by using the v.in.gdal.qgis for vector and r.in.gdal.qgis for raster layers.

Înapoi la text

21.15.2. moderate Reclassify raster layer

To discover the maximum value of the raster run the r.info tool: in the console you will see that the maximum value is 1699.

You are now ready to write the rules. Open a text editor and add the following rules:

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

save the file as a my_rules.txt file and close the text editor.

Run the r.reclass tool, choose the g_dem layer and load the file containing the rules you just have saved.

Click on Run and then on View Output. You can change the colors and the final result should look like the following picture:

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

Înapoi la text

21.16. Results For Noțiuni despre Bazele de date

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

Back to text

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

Notă

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

Back to text

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

Back to text

21.16.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)

Notă

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

Back to text

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

Notă

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ță!

Back to text

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

Back to text

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

Notă

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

Back to text

21.16.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)

Notă

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

Back to text

21.17. Results For Interogări spaţiale

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

Back to text

21.17.2. basic Crearea unui Index Spațial

CREATE INDEX cities_geo_idx
  ON cities
  USING gist (the_geom);

Back to text

21.18. Results For Construirea Geometriei

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

Back to text

21.18.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ă.

Back to text

21.19. Results For Modelul Entității Simple

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

Back to text

21.19.2. moderate Popularea Tabelei Geometry_Columns

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

Back to text

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

Back to text