Hoe kunnen we geografische objecten in een database opslaan en weergeven? In deze les zullen we één benadering behandelen, het Eenvoudige object model zoals dat is gedefinieerd door de OGC.
Het doel voor deze les: Leren wat het Eenvoudig object model is en hoe het te gebruiken.
Het Open Geospatial Consortium (OGC), een internationale organisatie voor standaarden onder vrijwillige consensus, werd opgericht in 1994. In de OGC werken meer dan 370+ commerciële, overheids-, non-profit- en onderzoeksorganisaties wereldwijd samen in een proces voor open consensus voor het aanmoedigen van de ontwikkeling en implementatie van standaarden voor georuimtelijke inhoud en services, het verwerken van gegevens voor GIS en het delen van gegevens. - Wikipedia
Het Simple Feature voor SQL (SFS) Model is een niet-topologische manier om georuimtelijke gegevens op te slaan in een database en definieert functies vooe toegang tot, het bewerken van en het construeren van deze gegevens.
Het model definieert georuimtelijke gegevens vanuit typen Punt, Lijn en Polygoon (en samenvoegingen daarvan naar Multi-objecten).
Kijk, voor meer informatie, eens naar de OGC Simple Feature for SQL standaard.
Laten we een veld point aan onze tabel people toevoegen:
alter table people add column the_geom geometry;
U zult opmerken dat het veldtype geometrie niet impliciet het type geometrie voor het veld specificeert - daarvoor hebben we een beperking (constraint) nodig:
alter table people
add constraint people_geom_point_chk
check(st_geometrytype(the_geom) = 'ST_Point'::text OR the_geom IS NULL);
Dit voegt een beperking aan de tabel toe zodat die alleen een geometrie punt of een waarde null accepteert.
Maak een nieuwe tabel, genaamd cities, en geef die enkele toepasselijke kolommen, inclusief een veld voor geometrie voor het opslaan van polygonen (de stadsgrenzen). Zorg er voor dat het een beperking heeft die maakt dat de geometrieën polygonen zijn.
Op dit punt zou u ook een item aan de tabel geometry_columns moeten toevoegen:
insert into geometry_columns values
('','public','people','the_geom',2,4326,'POINT');
Waarom? geometry_columns wordt door bepaalde toepassingen gebruikt om bij te houden welke tabellen in de database gegevens met geometrie bevatten.
Notitie
Als het bovenstaande argument INSERT een fout veroorzaakt, voer dan eerst deze query uit:
select * from geometry_columns;
If the column :kbd:`f_table_name` contains the value :kbd:`people`, then
this table has already been registered and you don't need to do anything
more.
De waarde 2 verwijst naar het aantal dimensies; in dit geval twee: X en Y.
De waarde 4326 verwijst naar de projectie die we gebruiken; in dit geval WGS 84, waarnaar wordt verwezen door het getal 4326 (bekijk de eerdere bespreking van EPSG).
Voeg een toepasselijk item voor geometry_columns in voor uw nieuwe laag cities
Nu onze tabellen ingeschakeld zijn voor geometrie, kunnen we er geometrieën in opslaan:
insert into people (name,house_no, street_id, phone_no, the_geom)
values ('Fault Towers',
34,
3,
'072 812 31 28',
'SRID=4326;POINT(33 -33)');
Notitie
In het nieuwe item hierboven zult u moeten specificeren welke projectie (SRID) u wilt gebruiken. Dit omdat u de geometrie van het nieuwe punt invoert met behulp van een gewone tekenreeks van tekst, wat niet automatisch de juiste informatie over de projectie toevoegt. Uiteraard dient het nieuwe punt hetzelfde SRID te gebruiken als de gegevensset waaraan het wordt toegevoegd, dus u moet het specificeren.
Als u op dit punt een grafische interface zou gebruiken, zou, bijvoorbeeld, het specificeren van de projectie voor elk punt automatisch gebeuren. Met andere woorden: u hoeft zich gewoonlijk geen zorgen te maken over het gebruiken van de juiste projectie voor elk punt dat u wilt toevoegen als u het al voor die gegevensset heeft gespecificeerd, zoals wij eerder al deden.
Nu is het waarschijnlijk een goed moment om QGIS te openen en te proberen uw tabel people te bekijken. Ook zouden we moeten proberen records te bewerken / toe te voegen / te verwijderen en dan query’s SELECT op de database uitvoeren om te zien hoe de gegevens zijn gewijzigd.
Een laag van PostGIS laden in QGIS, gebruik de menuoptie Laag ‣ PostGIS-laag toevoegen of de knop op de werkbalk:
Dit zal het dialoogvenster openen:
Klik op de knop Nieuw om dit dialoogvenster te openen:
Definieer dan een nieuwe verbinding, bijv.:
Name: myPG
Service:
Host: localhost
Port: 5432
Database: address
User:
Password:
Klik op Test verbinding om te zien of QGIS de database address heeft gevonden en of uw gebruikersnaam en wachtwoord juist zijn. Als het werkt, selecteer dan de vakken naast Gebruikersnaam opslaan en Wachtwoord opslaan. Klik dan op OK om deze verbinding te maken.
Terug in het dialoogvenster PostGIS-tabel(len) toevoegen, klik op Verbinden en voeg de lagen zoals gewoonlijk toe aan uw project.
Formuleer een query die de naam, straatnaam en positie (vanuit de kolom the_geom) weergeeft als gewone tekst.
U heeft gezien hoe u ruimtelijke objecten toevoegt aan uw database en ze bekijkt in GIS-software.
Vervolgens zult u zien hoe u gegevens importeert naar en exporteert vanuit uw database.