21. Antwoordenblad

21.1. Results For Uw eerste laag toevoegen

21.1.1. basic Voorbereiding

You should see a lot of lines, symbolizing roads. All these lines are in the vector layer that you just loaded to create a basic map.

Terug naar de tekst

21.2. Results For Een overzicht van de interface

21.2.1. basic Overzicht (Deel 1)

Bekijk opnieuw de afbeelding die de opmaak van de interface laat zien en controleer of u de namen en functies van de elementen van het scherm nog weet.

Terug naar de tekst

21.2.2. basic Overzicht (Deel 2)

  1. Opslaan als

  2. Zoom naar laag

  3. Help
  4. Renderen aan/uit

  5. Meetlijn

Terug naar de tekst

21.3. Results For Werken met vectorgegevens

21.3.1. basic Shapefiles

There should be five layers on your map:

  • places
  • water
  • buildings
  • rivers and
  • roads.

Back to text

21.3.2. basic Databases

All the vector layers should be loaded into the map. It probably won’t look nice yet though (we’ll fix the ugly colors later).

Back to text

21.4. Results For Symbologie

21.4.1. basic Kleuren

  • Verifieer dat de kleuren zijn gewijzigd zoals u verwachtte dat ze zouden veranderen.

  • It is enough to change only the water layer for now. An example is below, but may look different depending on the color you chose.
../../../_images/answer_water_blue.png

Notitie

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 check box next to its name in the Layers list. If the box is blank, then the layer is hidden.

Terug naar de tekst

21.4.2. basic Symboolstructuur

Uw kaart zou er nu zo uit moeten zien:

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

Als u een gebruiker bent op het niveau Beginner, mag u hier stoppen.

  • Gebruik de bovenstaande methode om de kleuren en stijlen voor alle resterende lagen te wijzigen.

  • Probeer natuurlijke kleuren te gebruiken voor de objecten. Een weg zou niet rood of blauw moeten zijn, maar kan grijs of zwart zijn.

  • Also feel free to experiment with different Fill Style and Border Style settings for the polygons.

Terug naar de tekst

21.4.3. moderate Symboollagen

  • Pas uw laag buildings aan zoals u wilt, maar onthoud dat het eenvoudig moet zijn de verschillende lagen in de kaart te onderscheiden.

Hier is een voorbeeld:

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

Terug naar de tekst

21.4.4. moderate Symboolniveau’s

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

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

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

  • If your symbol layers resemble the above but you’re not getting the result you want, check that your symbol levels look something like this:

    ../../../_images/answer_road_symbol_levels.png
  • Nu zou uw kaart er ongeveer zo uit moeten zien:

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

Terug naar de tekst

21.4.5. hard Symboolniveaus

  • Pas uw symboolniveaus aan naar deze waarden:

../../../_images/answer_road_symbol_layers.png
  • Experimenteer met verschillende waarden om verschillende resultaten te zien.

  • Open opnieuw uw originele kaart voordat u doorgaat met de volgende oefening.

Terug naar de tekst

21.5. Results For Attributengegevens

21.5.1. basic Attributengegevens

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.

Terug naar de tekst

21.6. Results For Het gereedschap Label

21.6.1. moderate Aanpassen van Label (Deel 1)

Uw kaart zou nu de markeringspunten moeten weergeven en de labels zouden verschoven moeten zijn met 2,0 mm: De stijl van de markeringen en labels zouden het mogelijk moeten maken beide duidelijk te zien op de kaart:

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

Terug naar de tekst

21.6.2. moderate Aanpassen van Label (Deel 2)

Eén mogelijke oplossing heeft dit uiteindelijke product:

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

Dit resultaat bereiken:

  • Gebruik een grootte voor het lettertype van 10, een Labelafstand van 1,5 mm, Symbool breedte en Symbool grootte van 3,0 mm.

  • In aanvulling daarop gebruikt dit voorbeeld de optie Afbrekingsteken:

    ../../../_images/wrap_character_settings.png
  • Voer een spatie in dit veld in en klik op Toepassen om hetzelfde effect te bereiken. In ons geval zijn enkele van de plaatsnamen erg lang, wat resulteert in namen over meerdere regels, wat niet erg gebruikersvriendelijk is. U vindt misschien dat deze instelling meer toepasselijk is voor uw kaart.

Terug naar de tekst

21.6.3. hard Gegevens-bepaalde instellingen gebruiken

  • Stel, nog steeds in de modus bewerken,, de waarden FONT_SIZE in op die welke u wenst. Het voorbeeld gebruikt 16 voor steden, 14 voor kleinere steden, 12 voor dorpen en 10 voor gehuchten.

  • Vergeet niet de bewerkingen op te slaan en verlaat de modus Bewerken.

  • Ga terug naar de opmaakopties voor Tekst voor de laag places en selecteer FONT_SIZE in het Attribuutveld van de grootte van het lettertype in de keuzelijst van Data-bepaalde óverride’:

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

    Uw resultaten, als u bovengenoemde waarden gebruikte, zou dit moeten zijn:

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

Terug naar de tekst

21.7. Results For Classificatie

21.7.1. moderate De classificatie verfijnen

  • Gebruik dezelfde methode als in de eerste oefening van de les om de randen te verwijderen:

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

De instellingen die u gebruikte zouden niet hetzelfde hoeven te zijn, maar met de waarden Klassen = 6 en Modus = Natuurlijke grenzen (Jenks) (en door natuurlijk dezelfde kleuren te gebruiken), zal de kaart er zo uit zien:

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

Terug naar de tekst

21.8. Results For Een nieuwe vector gegevensset maken

21.8.1. basic Digitialiseren

De symbologie is niet van belang, maar de resultaten zouden er min of meer als volgt uit moeten zien:

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

Terug naar de tekst

21.8.2. moderate Topologie: Gereedschap Ring toevoegen

De exacte vorm maakt niet uit, maar u zou een gat in het midden van uw object moeten hebben, zoals dit:

../../../_images/ring_tool_result.png
  • Maak uw bewerking ongedaan voordat u doorgaat met de volgende oefening voor het volgende gereedschap.

Terug naar de tekst

21.8.3. moderate Topologiw: Gereedschap Onderdeel toevoegen

  • Selecteer eerst Bontebok National Park:

../../../_images/park_selected.png
  • Voeg nu uw nieuwe gedeelte toe:

../../../_images/new_park_area.png
  • Maak uw bewerking ongedaan voordat u doorgaat met de volgende oefening voor het volgende gereedschap.

Terug naar de tekst

21.8.4. hard Objecten samenvoegen

  • Gebruik het gereedschap Geselecteerde pbjecten samenvoegen, zorg er voor dat u eerst beide polygonen heeft geselecteerd die u wilt samenvoegen.

  • Gebruik het object met de OGC_FID 1 als de bron van uw attributen (klik op het item ervan in het dialoogvenster, klik dan op de knop Gebruik attributen van geselecteerde object):

Notitie

Als u een andere gegevensset gebruikt is het zeer waarschijnlijk dat uw

originele polygoon’s OGC_FID niet 1 zal zijn. Kies eenvoudigweg een object dat een OGC_FID heeft.

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

Notitie

Gebruiken van het gereedschap Attributen van geselecteerde objecten samenvoegen zal de afzonderlijke geometrieën behouden, maar ze dezelfde attributen geven.

Terug naar de tekst

21.8.5. moderate Formulieren

Voor het TYPE is er uiteraard een beperkt aantal typen dat een weg kan zijn, en als u de attributentabel voor deze laag bekijkt, zult u zien dat zij vooraf gedefinieerd zijn.

  • Stel de widget in op Aanwezige waarden en klik op Data laden van laag.

  • Selecteer roads in het keuzemenu Label en highway voor de beide opties Waarde en Omschrijving:

    ../../../_images/value_map_settings.png
  • Klik driemaal op OK.

  • Als u het gereedschap Objecten identificeren nu gebruikt op een straat terwijl de modus Bewerken actief is, zal het dialoogvenster dat u krijgt er nu als volgt uitzien:

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

Terug naar de tekst

21.9. Results For Vectoranalyse

21.9.1. moderate Extract Your Layers from OSM Data

For the purpose of this exercise, the OSM layers which we are interested in are multipolygons and lines. The multipolygons layer contains the data we need in order to produce the houses, schools and restaurants layers. The lines layer contains the roads dataset.

The Query Builder is found in the layer properties:

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

Using the Query Builder against the multipolygons layer, create the following queries for the houses, schools, restaurants and residential layers:

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

Once you have entered each query, click OK. You’ll see that the map updates to show only the data you have selected. Since you need to use again the multipolygons data from the OSM dataset, at this point, you can use one of the following methods:

  • Rename the filtered OSM layer and re-import the layer from osm_data.osm, OR
  • Duplicate the filtered layer, rename the copy, clear the query and create your new query in the Query Builder.

Notitie

Although OSM’s building field has a house value, the coverage in your area - as in ours - may not be complete. In our test region, it is therefore more accurate to exclude all buildings which are defined as anything other than house. You may decide to simply include buildings which are defined as house and all other values that have not a clear meaning like yes.

To create the roads layer, build this query against OSM’s lines layer:

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

You should end up with a map which looks similar to the following:

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

Terug naar de tekst

21.9.2. basic Afstand van scholen

  • Uw dialoogvenster voor de buffer zou er nu ongeveer zo uit moeten zien:

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

    The Buffer distance is 1000 meters (i.e., 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

    met dit:

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

Terug naar de tekst

21.9.3. basic Afstand vanaf restaurants

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

  • Maak eerst een buffer van 500 m rondom de restaurants en voeg de laag toe aan de kaart:

    ../../../_images/restaurants_buffer.png ../../../_images/restaurants_buffer_result.png
  • Next, select buildings within that buffer area:

    ../../../_images/select_within_restaurants.png
  • Now save that selection to our new houses_restaurants_500m layer:

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

Uw kaart zou nu alleen die gebouwen moeten weergeven die binnen 50 m van een weg, 1 km vanaf een school en 500 m vanaf een restaurant liggen:

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

Back to text

21.10. Results For Rasteranalyse

21.10.1. basic Aspect berekenen

  • Set your DEM (Terrain analysis) dialog up like this:

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

Uw resultaat:

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

Terug naar de tekst

21.10.2. moderate Helling berekenen (minder dan 2 en 5 graden)

  • Stel uw dialoogvenster Rasterberekeningen als volgt in:

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

Uw resultaten:

  • 2 graden:

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

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

Terug naar de tekst

21.11. Results For De analyse voltooien

21.11.1. moderate Raster maar vector

  • Open the Query Builder by right-clicking on the all_terrain layer in the Layers list, select the General tab.
  • Bouw dan de query "suitable" = 1.

  • Klik op OK om alle polygonen die niet aan de voorwaarde voldoen uit te filteren.

Indien bekeken over het originele raster, zouden de gebieden elkaar perfect moeten overlappen:

../../../_images/polygonize_raster.png
  • You can save this layer by right-clicking on the all_terrain layer in the Layers list and choosing Save As..., then continue as per the instructions.

Terug naar de tekst

21.11.2. moderate Inspecteren van de resultaten

Het zal u zijn opgevallen dat enkele van de gebouwen in uw laag new_solution “in plakjes” zijn gesneden door het gereedschap Intersect. Dit geeft aan dat slechts een deel van het gebouw - en daarom slechts een gedeelte van het eigendom - op geschikt terrein ligt. We kunnen daarom deze gebouwen met een gerust hart uit onze gegevensset verwijderen

Terug naar de tekst

21.11.3. moderate De analyse verfijnen

Op dit moment zou uw analyse er ongeveer als volgt uit moeten zien:

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

Denk aan een cirkelvormig gebied, 100 meter doorlopend in alle richtingen.

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

Als het groter is dan 100 meter in straal, dan zal het aftrekken van 100 meter van de grootte (vanuit alle richtingen) resulteren in het overlaten van een deel ervan in het midden.

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

daarom kunt u een interne buffer van 100 meter op uw bestaande vectorlaag suitable_terrain toepassen. In de uitvoer van de bufferfunctie, wat overblijft van de originele laag zal de gebieden weergeven waar een geschikt terrein van 100 meter naast ligt.

Als demonstratie:

  • Ga naar Vector ‣ Geoprocessing-gereedschap ‣ Buffer(s) om het dialoogvenster Buffer(s) te openen.

  • Stel dat als volgt in:

    ../../../_images/suitable_terrain_buffer.png
  • gebruik de laag suitable_terrain met 10 segmenten en een bufferafstand van -100. (De afstand is automatisch in meters omdat uw kaart een geprojecteerd CRS gebruikt.)

  • Sla de uitvoer op in exercise_data/residential_development/ als suitable_terrain_continuous100m.shp.

  • Indien nodig, verplaats de nieuwe laag tot boven uw originele laag suitable_terrain.

Uw resultaten zullen er ongeveer zo uitzien:

../../../_images/suitable_buffer_results.png
  • gebruik nu het gereedschap Selecteren op plaats (Vector ‣ Onderzoeks-gereedschap ‣ Selecteren op plaats).

  • Stel dat als volgt in:

    ../../../_images/select_by_location.png
  • Selecteer objecten in new_solution die objecten kruisen in suitable_terrain_continuous100m.shp.

Dit is het resultaat:

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

De gele gebouwen zijn geselecteerd. Hoewel enkele van de gebouwen gedeeltelijk buiten de nieuwe laag suitable_terrain_continuous100m vallen, liggen zij ruimschoots binnen de laag suitable_terrain en voldoen daarmee aan al onze eisen.

  • Sla de selectie op onder exercise_data/residential_development/ als final_answer.shp.

Terug naar de tekst

21.12. Results For WMS

21.12.1. basic Een andere WMS-laag toevoegen

Uw kaart zou er nu ongeveer zo uit moeten zien (u moet misschien de volgorde van de lagen aanpassen):

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

Terug naar de tekst

21.12.2. moderate Een nieuwe WMS-server toevoegen

  • Gebruik dezelfde benadering als eerder om de nieuwe server toe te voegen en de toepasselijke laag zoals die gehost moet worden op die server:

    ../../../_images/add_ogc_server.png ../../../_images/add_bluemarble_layer.png
  • Als u inzoomt op het gebied Swellendam, zult u opmerken dat deze gegevensset een lage resolutie heeft:

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

Daarom is het beter deze gegevens niet te gebruiken voor de huidige kaart. De gegevens van Blue Marble zijn meer geschikt voor globale of nationale schalen.

Terug naar de tekst

21.12.3. moderate Een WMS-server zoeken

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.

Terug naar de tekst

21.13. Results For Database-concepten

21.13.1. basic Address tabeleigenschappen

Voor onze theoretische tabel Address, zouden we mogelijk de volgende eigenschappen willen opslaan:

House Number
Street Name
Suburb Name
City Name
Postcode
Country

Bij het maken van de tabel om een object adres weer te geven, zouden we kolommen maken om elk van deze eigenschappen weer te geven en we zouden ze aan SQL-eisen laten voldoen en mogelijk afgekorte namen geven:

house_number
street_name
suburb
city
postcode
country

Terug naar de tekst

21.13.2. basic De tabel People normaliseren

Het belangrijkste probleem met de tabel People is dat er één enkel adresveld is dat het volledige adres van een persoon bevat. denkend aan onze theoretische tabel Address eerder in deze les, weten we dat een adres is opgebouwd uit vele verschillende eigenschappen. Door al deze eigenschappen op te slaan in één veld, maken we het veel moeilijker om onze gegevens bij te werken en te bevragen. We dienen daarom het adresveld op te splitsen in de verscheidene eigenschappen. Dat zou ons een tabel geven die de volgende structuur heeft:

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

Notitie

In het volgende gedeelte zult u meer leren over relaties met Foreign Key die in dit voorbeeld zouden kunnen worden gebruikt om de structuur van onze database te verbeteren.

Terug naar de tekst

21.13.3. moderate Verdere normalisatie van de tabel People

Onze tabel People ziet er momenteel als volgt uit:

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

De kolom street_id geeft een relatie ‘één-tot-veel’ weer tussen het object People en het gerelateerde object Street, wat in de tabel Streets staat.

Eén manier voor het verder normaliseren van de tabel is om het veld Name op te splitsen in first_name en last_name:

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

We kunnen ook afzonderlijke tabellen maken voor de namen van stad of dorp en het land, en ze koppelen aan onze tabel People via relaties ‘één-tot-veel’:

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

Een ER-diagram om dit weer te geven zou er zo uitzien:

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

Terug naar de tekst

21.13.4. moderate Een tabel People maken

De SQL die is vereist voor het maken van de juiste tabel People is:

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

Het schema voor de tabel (voer \d people in) ziet er zo uit:

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)

Notitie

Om redenen van illustratie hebben we opzettelijk de beperking fkey weggelaten.

Terug naar de tekst

21.13.5. basic De opdracht DROP

De reden dat de opdracht DROP in dit geval niet zal werken is omdat de tabel People een beperking Foreign Key heeft voor de tabel Streets. Dit betekent dat het droppen (of verwijderen) van de tabel Streets de tabel People zou achterlaten met verwijzingen naar niet-bestaande gegevens van Streets.

Notitie

Het is mogelijk om te ‘forceren’ dat de tabel Streets zal worden verwijderd met behulp van de opdracht CASCADE, maar dat zou ook de tabel People en elke andere tabel die een relatie heeft met de tabel Streets verwijderen. Gebruik het dus voorzichtig!

Terug naar de tekst

21.13.6. basic Een nieuwe straat invoeren

De opdracht voor SQL die u zou moeten gebruiken ziet er als volgt uit (u mag de straatnaam vervangen door de naam van uw keuze):

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

Terug naar de tekst

21.13.7. moderate Een nieuwe persoon met een relatie Foreign Key toevoegen

Hier is de juiste opdracht voor SQL:

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

Als u opnieuw naar de tabel Streets kijkt (met behulp van een argument SELECT zoals eerder), zult u zien dat het id voor het item Main Road 2 is.

Dat is waarom we hierboven eenvoudigweg het nummer 2 konden invullen. Zelfs hoewel we Main Road niet volledig zien uitgeschreven in het item hierboven, zal de database in staat zijn om dat te associëren met de waarde van 2 voor street_id.

Notitie

Als u al een nieuw object street had toegevoegd, zou u kunnen merken dat de nieuwe Main Road een ID heeft van 3 en niet 2.

Terug naar de tekst

21.13.8. moderate Straatnamen teruggeven

Hier is het juiste argument voor SQL dat u zou moeten gebruiken:

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

Resultaat:

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

Notitie

Het zal u zijn opgevallen dat we veldnamen hebben met daaraan voorafgaand de tabelnaam (bijv. people.name en streets.name). Dat is altijd nodig wanneer de veldnaam niet duidelijk te onderscheiden is (d.i. niet uniek over alle tabellen in de database).

Terug naar de tekst

21.14. Results For Ruimtelijke query’s

21.14.1. basic De eenheden gebruikt in ruimtelijke query’s

De eenheden die door het voorbeeld van de query worden gebruikt zijn graden, omdat het CRS dat de laag gebruikt WGS 84 is. Dat is een Geografisch CRS, wat betekent dat de eenheden ervan in graden zijn. Een geprojecteerd CRS, zoals de projecties in UTM, is in meters.

Onthoud dat wanneer u een query schrijft, u dient te weten in welke eenheden het CRS van de laag is. Dat zal u in staat stellen een query te schrijven die de resultaten zal teruggeven die u er van verwacht.

Terug naar de tekst

21.14.2. basic Een ruimtelijke index maken

CREATE INDEX cities_geo_idx
  ON cities
  USING gist (the_geom);

Terug naar de tekst

21.15. Results For Construeren van geometrie

21.15.1. moderate Lijnen maken

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

Terug naar de tekst

21.15.2. moderate Tabellen koppelen

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

(steden vastleggen in 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)');

Als u het volgende foutbericht krijgt:

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

dan betekent dat dat u bij het experimenteren met het maken van polygonen voor de tabel Cities, u enkele ervan verwijderd moeten hebben en overnieuw zijn begonnen. Controleer de items in uw tabel Cities en gebruik een bestaande id.

Terug naar de tekst

21.16. Results For Eenvoudig object model

21.16.1. moderate Tabellen vullen

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

Terug naar de tekst

21.16.2. moderate De tabel geometry_columns vullen

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

Terug naar de tekst

21.16.3. hard Geometrie toevoegen

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

Resultaat:

     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)

Zoals u kunt zien staat onze beperking toe nulwaarden toe te voegen aan de database.

Terug naar de tekst