Overblog Folge diesem Blog
Edit post Administration Create my blog
Blog von Olaf Helper

T-SQL Geografie-Unterricht Teil 3 – Polygon

7. April 2010 , Geschrieben von Olaf Helper Veröffentlicht in #Geo - GIS

Kommen wir zur nächsten geografischen Form im Microsoft SQL Server Spatial Data (hier wieder Geography), den Polygonen. Auch hier gibt es ein paar einfache Punkte zu beachten.

 

-       Ein Polygon darf nicht größer als eine Hemisphäre sein, wobei es nicht auf eine bekannte (östlich / westliche oder nördliche / südliche) Hemisphäre beschränkte .Oder vereinfacht gesagt: Betrachtet man einen Globus aus einiger Entfernung, muss die definierte Fläche vollständig im sichtbaren Bereich sein. Das ist in erster Linie eine technische Einschränkung, praktisch dürfte es kein Problem sein; selbst der gesamte amerikanische Kontinent passt da rein.

-       Ein Polygon muss in sich geschlossen sein; das ist einfach, der Endpunkt muss mit dem Startpunkt über identisch sein.

-       Besteht ein Polygon aus mehreren separaten Flächen, dürfen die sich nicht überlappen, auch nicht teilweise.

-       Bei der Reihenfolge der einzelnen Eckpunkten muss man die „Links-Hand Regel“ (Left-Hand Rule) beachten, d.h. geht man die Punkte (in Gedanken) nacheinander ab, befindet sich die definierte Fläche zur Linken Seite hin. Die Punkte müssen also entgegen dem Uhrzeigersinn nach definiert werden.

Das muss man also im Hinterkopf behalten.

 

Bei dem ersten Beispiel mit den Punkten aus Teil 1 habe ich Städte mit deren realen Koordinaten verwendet, da bietet sich für dies hier Flächen wie Bundesländer o.ä als Beispiele an. Leider habe ich bisher keine frei verfügbare Koordinaten-Listen / Shape-Files oder vergleichbare Daten gefunden.

Deswegen habe ich mal selbst ein paar Eckpunkte heraus gesucht; aber eben nur ein paar groblegende, es soll ja nur ein Beispiel werden.

Ich habe hier Niedersachen genommen, denn es bietet gleich noch einen interessanten Aspekt: Bremen als „Insel“ innerhalb der Fläche. Wie man unten im T-SQL Script sehen kann, wird diese Insel durch eine weitere Fläche innerhalb des Polygons festgelegt. Die Punkte sind hier im Uhrzeiger-Sinn angeordnet, weil sich die eigentliche Fläche außerhalb befindet; so schneidet man die Fläche aus der anderen raus.

 

 -- In Teil 1 angelegte Datenbank verwenden 
 USE [GeoTest]; 
 GO 
   
 -- Tabelle für Bereiche anlegen 
 CREATE TABLE Area 
  (ID int IDENTITY(1, 1) NOT NULL Primary Key, 
  AreaName nvarchar(50), 
  Area geography); 
 GO 
   
 -- Niedersachen; na ja, so irgendwie 
 -- Wichtig bei Geometry-Polygon: Die Links-Hand Regel beachten. 
 -- Die zweite Fläche in dem Polygon stellt Bremen dar, 
 -- das aus Niedersachsen ausgeschnitten wird, weil es innen liegt. 
 INSERT INTO Area 
 VALUES (N'Niedersachen' 
  ,geography::STGeomFromText( 
  'POLYGON(( 10.7080 51.6387  
  , 10.5596 51.9899 
  , 10.9734 52.0562 
  , 10.7655 52.8280 
  , 11.6011 53.0335 
  , 10.3189 53.4344 
  , 9.8703 53.4308 
  , 9.7805 53.5456 
  , 9.2144 53.8694 
  , 8.6661 53.8665 
  , 8.0329 53.7027 
  , 7.0975 53.5748 
   , 7.0556 52.6282 
  , 6.7154 52.6183 
  , 6.7284 52.4718 
  , 7.0424 52.2062 
  , 7.6176 52.4459 
  , 8.0267 52.1244 
  , 8.5208 52.1644 
   , 8.3500 52.4635 
  , 9.1354 52.4687 
  , 9.7164 51.2969 
  , 10.7080 51.6387 
  )'  
  -- Ab hier der Ausschnitt "Bremen"  
  + ', 
  ( 8.5009 53.2254 
  , 8.9835 53.1127 
   , 8.9287 52.9992 
  , 8.7099 53.0355 
  , 8.6237 53.1599 
  , 8.5009 53.2254 
  ) 
  )' 
  ,4326) 
  ); 
   
 -- Bremen; genau wie die Lücke in Niedersachen 
 -- nur die Punkte in umgedrehter Reihenfolge, 
 -- wegen der Links-Hand Regel!  
 INSERT INTO Area 
 VALUES (N'Bremen' 
  ,geography::STGeomFromText( 
  'POLYGON(( 8.5009 53.2254 
  , 8.6237 53.1599 
  , 8.7099 53.0355 
  , 8.9287 52.9992 
  , 8.9835 53.1127 
  , 8.5009 53.2254 
  ) 
  )' 
  ,4326) 
  ); 
 GO 
   
 -- Zur Anzeige selektieren: 
 SELECT * 
 FROM Area; 
 GO 

 

Jetzt wird auch mal wirklich was im „Spatial results“ angezeigt, farbig ausgefüllte Flächen. Wenn man als „Projection“ dann „Mercator“, eine Landkarte daneben hält, ein Auge zukneift und nicht ganz so scharf hinsieht, kann man fast erkennen, dass es sich um den Umriss von Niedersachen handelt. J

Wenn man dann noch bei „Label column“ das „AreaName“ angibt, wird auch der Name des Landes angezeigt; schon fast eine kleine Geo-Visualisierung.

 

Spatial_Result_Polygon.jpg

Diesen Post teilen

Repost 0

Kommentiere diesen Post

Lars Gunthner 04/10/2010 15:00


Das klingt ja alles ganz schön kompliziert, wie schafft man es denn, da noch irgendwo durchzublicken?


Olaf Helper 04/12/2010 20:57



Hallo Lars,


ach, wenn man sich mit dem Thema Geodatn beschäftigt, ist das nicht so kompliziert, man muss sich nur an ein paar einfach Regeln halten; die ich ja aufgeführt haben.


Viele Grüße, Olaf Helper