<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-CH">
	<id>https://giswiki.ch/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Juliane</id>
	<title>Geometa Lab OST - Benutzerbeiträge [de-ch]</title>
	<link rel="self" type="application/atom+xml" href="https://giswiki.ch/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Juliane"/>
	<link rel="alternate" type="text/html" href="https://giswiki.ch/Spezial:Beitr%C3%A4ge/Juliane"/>
	<updated>2026-04-28T17:22:50Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22477</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22477"/>
		<updated>2009-02-10T17:32:59Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Query 5: Buffer rund um ein Linien-Element */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
===Benutzte Versionen===&lt;br /&gt;
* PostGIS Version 1.1.4 (PC) mit PostgreSQL Version 8.1.4&lt;br /&gt;
* PostGIS Version 1.3.3-1 (Mac) mit PostgreSQL Version 8.3.5 für kml-Generierung&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
 &lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.&amp;quot;name&amp;quot;, b.the_geom, b.gid, n.&amp;quot;type&amp;quot;&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22476</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22476"/>
		<updated>2009-02-10T17:31:24Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
===Benutzte Versionen===&lt;br /&gt;
* PostGIS Version 1.1.4 (PC) mit PostgreSQL Version 8.1.4&lt;br /&gt;
* PostGIS Version 1.3.3-1 (Mac) mit PostgreSQL Version 8.3.5 für kml-Generierung&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.&amp;quot;name&amp;quot;, b.the_geom, b.gid, n.&amp;quot;type&amp;quot;&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22475</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22475"/>
		<updated>2009-02-10T17:31:05Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
===Benutzte Versionen===&lt;br /&gt;
* PostGIS Version 1.1.4 (PC) mit PostgreSQL Version 8.1.4&lt;br /&gt;
* PostGIS Version 1.3.3-1 (Mac) mit PostgreSQL Version 8.3.5 für kml-Generierung&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.&amp;quot;name&amp;quot;, b.the_geom, b.gid, n.&amp;quot;type&amp;quot;&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22474</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22474"/>
		<updated>2009-02-10T17:24:59Z</updated>

		<summary type="html">&lt;p&gt;Juliane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
===Benutzte Versionen===&lt;br /&gt;
* PostGIS Version 1.1.4 (PC) mit PostgreSQL Version 8.1.4&lt;br /&gt;
* PostGIS Version 1.3.3-1 (Mac) mit PostgreSQL Version 8.3.5 für kml-Generierung&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.&amp;quot;name&amp;quot;, b.the_geom, b.gid, n.&amp;quot;type&amp;quot;&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22473</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22473"/>
		<updated>2009-02-10T17:23:15Z</updated>

		<summary type="html">&lt;p&gt;Juliane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
Benutzte Versionen: PostGIS Version 1.1.4 (PC) mit PostgreSQL Version 8.1.4 und PostGIS Version 1.3.3-1 (Mac) mit PostgreSQL Version 8.3.5 für kml-Generierung&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.&amp;quot;name&amp;quot;, b.the_geom, b.gid, n.&amp;quot;type&amp;quot;&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22472</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22472"/>
		<updated>2009-02-10T17:22:52Z</updated>

		<summary type="html">&lt;p&gt;Juliane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
Benutzte Versionen:&lt;br /&gt;
&lt;br /&gt;
PostGIS Version 1.1.4 (PC) mit PostgreSQL Version 8.1.4&lt;br /&gt;
&lt;br /&gt;
PostGIS Version 1.3.3-1 (Mac) mit PostgreSQL Version 8.3.5 für kml-Generierung&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.&amp;quot;name&amp;quot;, b.the_geom, b.gid, n.&amp;quot;type&amp;quot;&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22471</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22471"/>
		<updated>2009-02-10T17:22:35Z</updated>

		<summary type="html">&lt;p&gt;Juliane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
Benutzte Versionen:&lt;br /&gt;
PostGIS Version 1.1.4 (PC) mit PostgreSQL Version 8.1.4&lt;br /&gt;
PostGIS Version 1.3.3-1 (Mac) mit PostgreSQL Version 8.3.5 für kml-Generierung&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.&amp;quot;name&amp;quot;, b.the_geom, b.gid, n.&amp;quot;type&amp;quot;&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22470</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22470"/>
		<updated>2009-02-10T17:22:07Z</updated>

		<summary type="html">&lt;p&gt;Juliane: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
Benutzte Versionen:  &lt;br /&gt;
PostGIS Version 1.1.4 (PC) mit PostgreSQL Version 8.1.4&lt;br /&gt;
PostGIS Version 1.3.3-1 (Mac) mit PostgreSQL Version 8.3.5 für kml-Generierung&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.&amp;quot;name&amp;quot;, b.the_geom, b.gid, n.&amp;quot;type&amp;quot;&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22469</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22469"/>
		<updated>2009-02-10T17:08:54Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Query 7: Eigene Query */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.&amp;quot;name&amp;quot;, b.the_geom, b.gid, n.&amp;quot;type&amp;quot;&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.&amp;quot;name&amp;quot;, b.&amp;quot;name&amp;quot;, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22468</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22468"/>
		<updated>2009-02-10T17:08:18Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.&amp;quot;name&amp;quot;, b.the_geom, b.gid, n.&amp;quot;type&amp;quot;&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22467</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22467"/>
		<updated>2009-02-10T17:04:29Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Query 3: KML speichern */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) [http://code.google.com/p/gbif-wdpa/wiki/PosgresqlFunctions]  erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22466</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22466"/>
		<updated>2009-02-10T17:03:38Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Digital Chart of the World */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die&lt;br /&gt;
                       [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22465</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22465"/>
		<updated>2009-02-10T17:03:13Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Digital Chart of the World */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die [http://www1.nga.mil/Pages/Default.aspx National Imagery and Mapping Agency] erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22464</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22464"/>
		<updated>2009-02-10T17:02:00Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* OpenStreetMap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22463</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22463"/>
		<updated>2009-02-10T17:01:30Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* OpenStreetMap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem OSM-Projekt unterliegen der [http://creativecommons.org/licenses/by-sa/2.0/ Creative Commons &lt;br /&gt;
                       Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22462</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22462"/>
		<updated>2009-02-10T17:00:18Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* OpenStreetMap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der [http://creativecommons.org/licenses              &lt;br /&gt;
                       /by-sa/2.0/ Creative Commons Attribution Share-Alike-Lizenz].&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22461</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22461"/>
		<updated>2009-02-10T16:58:36Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Laden der Datensätze */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in [http://www.qgis.org/ QuantumGIS] geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22460</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22460"/>
		<updated>2009-02-10T16:56:18Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Verwendete Daten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des [http://www.maproom.psu.edu/dcw/ &amp;quot;Digital Chart of the World&amp;quot;] (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22459</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22459"/>
		<updated>2009-02-10T16:54:42Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Verwendete Daten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/ http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22458</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22458"/>
		<updated>2009-02-10T16:54:18Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Verwendete Daten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter [http://download.geofabrik.de/osm/europe/] zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22457</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22457"/>
		<updated>2009-02-10T16:52:58Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Verwendete Daten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden [http://www.openstreetmap.org OpenStreetMap]-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22456</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22456"/>
		<updated>2009-02-10T16:16:04Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Laden der Datensätze */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 -- Statement &lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 -- Statement&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22455</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22455"/>
		<updated>2009-02-10T16:15:44Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Laden der Datensätze */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
 Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
 Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22454</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22454"/>
		<updated>2009-02-10T16:14:56Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* OpenStreetMap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = ESRI Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22453</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22453"/>
		<updated>2009-02-10T16:14:29Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Digital Chart of the World */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
                  &lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22452</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22452"/>
		<updated>2009-02-10T16:14:20Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Digital Chart of the World */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
             &lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden:&lt;br /&gt;
               &lt;br /&gt;
                       ponet.e00&lt;br /&gt;
                       Landesgrenze der Schweiz&lt;br /&gt;
         &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       Siedlungsgebiete der Schweiz&lt;br /&gt;
      &lt;br /&gt;
  dc:format          = Arc/INFO coverage &lt;br /&gt;
           &lt;br /&gt;
  dct:spatial        = ponet.e00&lt;br /&gt;
                       northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
             &lt;br /&gt;
                       pppoly.e00&lt;br /&gt;
                       northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22451</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22451"/>
		<updated>2009-02-10T16:13:01Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* OpenStreetMap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp&lt;br /&gt;
                       northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567 &lt;br /&gt;
                    &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
   &lt;br /&gt;
                       roads.shp&lt;br /&gt;
                       northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                   &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                    &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
                   &lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22450</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22450"/>
		<updated>2009-02-10T16:00:10Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* OpenStreetMap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
                       &lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
                       &lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
                         &lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22449</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22449"/>
		<updated>2009-02-10T15:59:47Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* OpenStreetMap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       railways.shp&lt;br /&gt;
                       Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       &lt;br /&gt;
                       roads.shp &lt;br /&gt;
                       Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       waterways.shp&lt;br /&gt;
                       Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                        &lt;br /&gt;
                       points.shp&lt;br /&gt;
                       Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22448</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22448"/>
		<updated>2009-02-10T15:58:47Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* OpenStreetMap */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert:&lt;br /&gt;
                        &lt;br /&gt;
                       buildings.shp&lt;br /&gt;
                       Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       &lt;br /&gt;
                       natural.shp&lt;br /&gt;
                       Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22447</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22447"/>
		<updated>2009-02-10T15:56:06Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Verwendete Daten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK &#039;&#039;Digital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22444</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22444"/>
		<updated>2009-02-10T15:52:21Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* &amp;#039;&amp;#039;&amp;#039;Query 7: Eigene Query&amp;#039;&amp;#039;&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 7: Eigene Query ===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22443</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22443"/>
		<updated>2009-02-10T15:52:12Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* &amp;#039;&amp;#039;&amp;#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&amp;#039;&amp;#039;&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
=== Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche ===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22442</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22442"/>
		<updated>2009-02-10T15:52:04Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* &amp;#039;&amp;#039;&amp;#039;Query 5: Buffer rund um ein Linien-Element&amp;#039;&amp;#039;&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
=== Query 5: Buffer rund um ein Linien-Element ===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22441</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22441"/>
		<updated>2009-02-10T15:51:57Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* &amp;#039;&amp;#039;&amp;#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&amp;#039;&amp;#039;&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
=== Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox) ===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22440</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22440"/>
		<updated>2009-02-10T15:51:48Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* &amp;#039;&amp;#039;&amp;#039;Query 3: KML speichern&amp;#039;&amp;#039;&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
=== Query 3: KML speichern ===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22439</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22439"/>
		<updated>2009-02-10T15:51:40Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* &amp;#039;&amp;#039;&amp;#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&amp;#039;&amp;#039;&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
=== Query 2: Umprojizieren (CH03-&amp;gt;WGS84) ===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor.&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22438</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22438"/>
		<updated>2009-02-10T15:51:29Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* &amp;#039;&amp;#039;&amp;#039;Query 1: Datensatz mit mindestens einem Thema&amp;#039;&amp;#039;&amp;#039; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
=== Query 1: Datensatz mit mindestens einem Thema ===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22437</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22437"/>
		<updated>2009-02-10T15:51:02Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Daten: OpenStreetMap von Zürich und Umgebung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== OpenStreetMap ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Digital Chart of the World ====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22436</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22436"/>
		<updated>2009-02-10T15:50:14Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;===&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22435</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22435"/>
		<updated>2009-02-10T15:49:16Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Daten: OpenStreetMap von Zürich und Umgebung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
=== Verwendete Daten ===&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;====&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22434</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22434"/>
		<updated>2009-02-10T15:48:28Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Daten: OpenStreetMap von Zürich und Umgebung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&lt;br /&gt;
==== &#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039; ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22433</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22433"/>
		<updated>2009-02-10T15:46:30Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22432</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22432"/>
		<updated>2009-02-10T15:45:53Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a = cos(φ) × 2 π r / 360 = xx km &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a in km = cos(φ) × 2 π r / 360 &lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22431</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22431"/>
		<updated>2009-02-10T15:44:53Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a = cos(φ) × 2 π r / 360 = xx km &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 6: Spatial Join (Overlay, Flächenverschnitt) zweier Feature-Klassen vom Typ Fläche&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es soll ein Spatial Join aller Gebäude von buildings_zh, die innerhalb der Polygone von natural_zh liegen, erstellt werden. &lt;br /&gt;
&lt;br /&gt;
 SELECT b.”name”, b.the_geom, b.gid, n.”type”&lt;br /&gt;
 FROM natural_zh n, buildings_zh b &lt;br /&gt;
 WHERE Contains(n.the_geom, b.the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 7: Eigene Query&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es soll ermittelt werden von welchem Gebäude innerhalb natural_zh (vgl. Query 6) die Distanz zur nächsten Bushaltstelle am kürzesten ist.&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a = cos(φ) × 2 π r / 360 = xx km &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
 SELECT s.gid, s.”name”, b.”name”, b.osm_id,&lt;br /&gt;
   MIN (distance(s.the_geom, b.the_geom)*750) AS min_dist&lt;br /&gt;
 FROM spatial_join s, busstationen_zh b&lt;br /&gt;
 GROUP BY s.gid, s.”name”, b.”name”, b.osm_id&lt;br /&gt;
 ORDER BY min_dist ASC&lt;br /&gt;
 LIMIT 1;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22430</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22430"/>
		<updated>2009-02-10T15:43:28Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a = cos(φ) × 2 π r / 360 = xx km &lt;br /&gt;
&lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22429</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22429"/>
		<updated>2009-02-10T15:42:58Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
&lt;br /&gt;
Längengradabstand a = cos(φ) × 2 π r / 360 = xx km &lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22428</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22428"/>
		<updated>2009-02-10T15:42:35Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Umrechnung ° in km&lt;br /&gt;
Längengradabstand a = cos(φ) × 2 π r / 360 = xx km &lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22427</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22427"/>
		<updated>2009-02-10T15:42:01Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 5: Buffer rund um ein Linien-Element&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es wird ein Buffer von ca. 400 m um die Limmat gelegt und anschliessend ebenfalls als KML-Datei gespeichert. &lt;br /&gt;
&lt;br /&gt;
 -- ca. 0.4 km Buffer um den Fluss Limmat&lt;br /&gt;
 SELECT Buffer(the_geom,0.005) as buffer, &lt;br /&gt;
 * FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
 &lt;br /&gt;
 -- Buffer als KML speichern&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;buffer limmat&#039;,&lt;br /&gt;
   geomunion(transform(Buffer(the_geom,0.005),4326))) &lt;br /&gt;
 FROM waterways_zh &lt;br /&gt;
 WHERE &amp;quot;name&amp;quot;=&#039;Limmat&#039;;&lt;br /&gt;
&lt;br /&gt;
* Umrechnung ° in km&lt;br /&gt;
Längengradabstand a = cos(φ) × 2 π r / 360 = xx km &lt;br /&gt;
Für Zürich φ = 47°40’ und r = 6370 km -&amp;gt; 0.1° ca. 75 km&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22426</id>
		<title>Sem PostGIS Juliane</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=Sem_PostGIS_Juliane&amp;diff=22426"/>
		<updated>2009-02-10T15:40:45Z</updated>

		<summary type="html">&lt;p&gt;Juliane: /* Queries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Wiki-Seite zum Selbststudium im [[GISpunkt-Seminar PostGIS]]. Zurück zu [[Sem PostGIS Selbststudium]].&lt;br /&gt;
&lt;br /&gt;
== Daten: OpenStreetMap von Zürich und Umgebung ==&lt;br /&gt;
Als Übungsdaten werden &amp;quot;&#039;&#039;LINK OpenStreetMap&#039;&#039;&amp;quot;-Daten der Schweiz verwendet. Diese stehen kostenfrei unter LINK &#039;&#039;geofabrik&#039;&#039; zum Download zur Verfügung. Der Datensatz switzerland.shp.zip enthält Gebäude (buildings.shp), Bodenbedeckung (natural.shp), Bahnen (railways.shp), Strassen (roads.shp), Gewässernetz (waterways.shp) und Points of Interest (points.shp). Aus dem Datensatz points.shp werden zur beispielhaften Bearbeitung der Aufgabe die Bushaltestellen extrahiert (vgl. Query 1).&lt;br /&gt;
&lt;br /&gt;
Zudem werden die Schweizer Landesgrenze (ponet.e00) und die Grenzen der Siedlungsgebiete (pppoly.e00) des &amp;quot;LINK D&#039;&#039;igital Chart of the World&#039;&#039;&amp;quot; (DCW)-Datensatzes über LINK &#039;&#039;maproom&#039;&#039; bezogen. Diese Daten können ebenfalls kostenfrei heruntergeladen werden.&lt;br /&gt;
&lt;br /&gt;
=== Metadaten-Records ===&lt;br /&gt;
&#039;&#039;&#039;OpenStreetMap&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
  dc:title           = OpenStreetMap&lt;br /&gt;
                       Buildings, Natural, Railways, Roads, Waterways, Points&lt;br /&gt;
  dct:abstract       = Die Dateien werden regelmässig mit dem Tool Osmosis aus dem so genannten &amp;quot;Planet File&amp;quot; ausgeschnitten, das &lt;br /&gt;
                       einen Gesamt-Abzug der &amp;quot;OpenStreetMap&amp;quot;-Datenbank darstellt. Solche Auszüge werden von der Geofabrik GmbH &lt;br /&gt;
                       erstellt, aktualisiert und als Shapefiles bereitgestellt. Folgende Elemente sind in den einzelnen Shapefiles &lt;br /&gt;
                       gespeichert und teilweise bereits vollständig attributiert: &lt;br /&gt;
                       buildings.shp: Gebäude, Öffentliche Gebäude, etc.&lt;br /&gt;
                       natural.shp: Wälder, Parkanlagen, Seen, etc.&lt;br /&gt;
                       railways.shp: Eisenbahnlinien, Tramlinien, Bahnhöfe, U-Bahnen, Schmalspurbahnen, etc. &lt;br /&gt;
                       roads.shp: Fusswege, Strassen (1. Klasse, 2. Klasse usw.), Radwege, etc.&lt;br /&gt;
                       waterways.shp: Kanäle, Bäche, Flüsse, Wehre, etc.&lt;br /&gt;
                       points.shp: Busstationen, Almhütten, Museen, Cafés, Hotels, Kindergärten, Universitäten, Tierparks, etc.&lt;br /&gt;
  dc:format          = Shapefile&lt;br /&gt;
  dct:spatial        = buildings.shp: northlimit=47.734204; southlimit=46.006147; eastlimit=10.409632; westlimit=6.037668&lt;br /&gt;
                       natural.shp: northlimit=47.808295; southlimit=45.905356; eastlimit=10.481553; westlimit=5.957567&lt;br /&gt;
                       railways.shp: northlimit=47.745569; southlimit=45.832066; eastlimit=10.287146; westlimit=5.993640&lt;br /&gt;
                       roads.shp: northlimit=47.808603; southlimit=45.821394; eastlimit=10.488137; westlimit=5.965783&lt;br /&gt;
                       waterways.shp: northlimit=47.783465; southlimit=45.904293; eastlimit=10.487938; westlimit=5.978676&lt;br /&gt;
                       points.shp: northlimit=47.792457; southlimit=45.832330; eastlimit=10.453054; westlimit=6.000755&lt;br /&gt;
  dct:modified       = 02-Feb-2009 07:41&lt;br /&gt;
  dc:publisher       = Geofabrik GmbH Karlsruhe &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Alle Daten aus dem &amp;quot;OpenStreetMap&amp;quot;-Projekt unterliegen der LINK &#039;&#039;Creative Commons Attribution Share-Alike- &lt;br /&gt;
                       Lizenz&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Digital Chart of the World&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bemerkung: Die Angabe beim DC-Element &#039;&#039;modified&#039;&#039; bezieht sich auf das Datum des Datenbezugs. Die Original DCW-Daten stammen vermutlich aus dem Jahr 1993. &lt;br /&gt;
&lt;br /&gt;
  dc:title           = Digital Chart of the World&lt;br /&gt;
                       Ponet, Pppoly&lt;br /&gt;
  dct:abstract       = Verschiedene Kartenebenen zahlreicher Länder können im Arc/INFO Exportformat von ESRI&#039;s &amp;quot;Digital Chart of the&lt;br /&gt;
                       World&amp;quot;-Datensatz heruntergeladen werden.  &lt;br /&gt;
                       ponet.e00: Landesgrenze der Schweiz&lt;br /&gt;
                       pppoly.e00: Siedlungsgebiete der Schweiz&lt;br /&gt;
  dc:format          = Arc/INFO coverage&lt;br /&gt;
  dct:spatial        = ponet.e00: northlimit=47.810918; southlimit=45.796475; eastlimit=10.552661; westlimit=5.912654&lt;br /&gt;
                       pppoly.e00: northlimit=47.721973; southlimit=45.982600; eastlimit=9.668165; westlimit=6.040542&lt;br /&gt;
  dct:modified       = 04-Feb-2009 11:28 &lt;br /&gt;
  dc:publisher       = maproom, Pennsylvania State University &lt;br /&gt;
  dc:language        = en&lt;br /&gt;
  dc:rights          = Die ursprünglichen Daten der DCW wurden von der US Defence Mapping Agency erstellt und sind über die LINK  &lt;br /&gt;
                       &#039;&#039;National Imagery and Mapping Agency&#039;&#039; erhältlich.&lt;br /&gt;
&lt;br /&gt;
== Laden der Datensätze ==&lt;br /&gt;
&lt;br /&gt;
Die Coverages ponet.e00 und pppoly.e00 werden zuerst in LINK &#039;&#039;QuantumGIS&#039;&#039; geladen und als Shapefiles exportiert (rechte Maustaste auf entsprechenden Layer &amp;gt; Save as shapefile). Zu Übungszwecken für eine anschliessende Umprojektion (vgl. Query 2) wird als Coordinate reference System CH1903/LV03 (EPSG: 21781) ausgewählt.&lt;br /&gt;
&lt;br /&gt;
Alle Shapefiles werden mit shp2pgsql.exe in sql-Files konvertiert.&lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 shp2pgsql -I -W codierung shapefilename tablename &amp;gt; outputsql.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der &amp;quot;OpenStreetMap&amp;quot;-Daten:&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 buildings gebaeude &amp;gt; buildings.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 natural flaechen &amp;gt; natural.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 points points &amp;gt; points.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 railways bahnen &amp;gt; railways.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 roads strassen &amp;gt; roads.sql&lt;br /&gt;
 shp2pgsql –s 4326 –I –W ISO-8859-15 waterways gewaesser &amp;gt; waterways.sql&lt;br /&gt;
&lt;br /&gt;
Konvertieren der Daten der &amp;quot;Digital Chart of the World&amp;quot;:&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 ponet grenze &amp;gt; ponet.sql&lt;br /&gt;
 shp2pgsql –s 21781 –I –W ISO-8859-15 pppoly siedlungen &amp;gt; pppoly.sql&lt;br /&gt;
&lt;br /&gt;
Anschliessend werden die sql-Files über Terminal mit psql.exe in die PostGIS-Datenbank auf dem Server geladen. &lt;br /&gt;
&lt;br /&gt;
Statement:&lt;br /&gt;
 psql –U rolename –d datenbankname –h host –p port –f filename.sql&lt;br /&gt;
&lt;br /&gt;
== Queries ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 1: Datensatz mit mindestens einem Thema&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Datensatz points.shp beinhaltet zahlreiche Points of Interest (siehe Metadaten-Records). Für die weitere Bearbeitung werden alle Bushaltestellen selektiert und in eine neue Tabelle gespeichert.&lt;br /&gt;
&lt;br /&gt;
 -- Neue Tabelle busstationen anlegen&lt;br /&gt;
 CREATE TABLE busstationen&lt;br /&gt;
 (&lt;br /&gt;
   gid serial NOT NULL,&lt;br /&gt;
   osm_id bigint,&lt;br /&gt;
   &amp;quot;name&amp;quot; character varying(32),&lt;br /&gt;
   &amp;quot;type&amp;quot; character varying(16),&lt;br /&gt;
   the_geom geometry,&lt;br /&gt;
   CONSTRAINT busstationen_pkey PRIMARY KEY (gid),&lt;br /&gt;
   CONSTRAINT enforce_dims_the_geom CHECK (ndims(the_geom) = 2),&lt;br /&gt;
   CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = &#039;POINT&#039;::text OR the_geom IS NULL),&lt;br /&gt;
   CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = 4326)&lt;br /&gt;
 )&lt;br /&gt;
 WITHOUT OIDS;&lt;br /&gt;
 ALTER TABLE busstationen OWNER TO swai;&lt;br /&gt;
   &lt;br /&gt;
 -- Index kreieren&lt;br /&gt;
 CREATE INDEX busstationen_the_geom_gist&lt;br /&gt;
   ON busstationen&lt;br /&gt;
   USING gist&lt;br /&gt;
   (the_geom);&lt;br /&gt;
  &lt;br /&gt;
 -- Busstationen aus Tabelle points selektieren und in die zuvor angelegte Tabelle busstationen einfügen&lt;br /&gt;
 INSERT INTO busstationen&lt;br /&gt;
  (&lt;br /&gt;
   SELECT gid, osm_id, &amp;quot;name&amp;quot;, &amp;quot;type&amp;quot;, the_geom &lt;br /&gt;
   FROM points&lt;br /&gt;
   WHERE &amp;quot;type&amp;quot; = &#039;bus_station&#039;&lt;br /&gt;
  );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 2: Umprojizieren (CH03-&amp;gt;WGS84)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;Digital Chart of the World&amp;quot;-Daten liegen im Koordinatensystem CH03/LV03 (EPSG: 21781) vor. Für den anschliessenden KML-Export müssen sie jedoch in das geografische Koordinatensystem WGS84 (EPSG: 4326) transformiert werden. Die Umprojektion wird mit Hilfe einer zweiten Geometriespalte (wgs84) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
 -- Geometriespalte hinzufügen&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;ponet&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 SELECT AddGeometryColumn(&#039;public&#039;,&#039;pppoly&#039;,&#039;wgs84&#039;,4326,&#039;MULTILINESTRING&#039;, 2);&lt;br /&gt;
 &lt;br /&gt;
 -- Daten umprojizieren&lt;br /&gt;
 UPDATE ponet SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
 UPDATE pppoly SET wgs84 = transform(the_geom, 4326);&lt;br /&gt;
&lt;br /&gt;
Die &amp;quot;OpenStreetMap&amp;quot;-Daten müssen nicht umprojiziert werden. Sie liegen bereits im WGS84 Koordinatensystem vor. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 3: KML speichern&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die KML-Dateien werden mit der Funktion AsKML(text, text, geometrie) &#039;&#039;LINK google function&#039;&#039; erstellt. Mit dieser Funktion wird die Ausgabe KML-konform formatiert.&lt;br /&gt;
&lt;br /&gt;
 -- KML ponet&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;schweiz&#039;,&lt;br /&gt;
   &#039;landesgrenze&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM ponet;&lt;br /&gt;
&lt;br /&gt;
Die Konvertierung alle anderen Datensätze dauert sehr lange. Aus diesem Grund werden alle weiteren KML’s aus den selektierten BBox Dateien (vgl. Query 4) erzeugt. Im Folgenden beispielhaft die Speicherung als KML für die Tabellen pppoly_zh und buildings_zh:&lt;br /&gt;
&lt;br /&gt;
 -- KML aus BBox pppoly_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;siedlungsflaeche&#039;,&lt;br /&gt;
   geomunion(transform(wgs84,4326)))&lt;br /&gt;
 FROM pppoly_zh;&lt;br /&gt;
 &lt;br /&gt;
  &lt;br /&gt;
 -- KML aus BBox buildings_zh&lt;br /&gt;
 SELECT askml(&lt;br /&gt;
   &#039;zuerich&#039;,&lt;br /&gt;
   &#039;gebaeude&#039;,&lt;br /&gt;
   geomunion(transform(the_geom,4326)))&lt;br /&gt;
 FROM buildings_zh;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Query 4: Ausschnitt anfragen (Perimeter, definiert mittels BBox)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Als Bounding Box-Umgebung wird die Region Zürich mit folgenden Eckkoordinaten definiert: 8.45 47.45, 8.6 47.35. Die in der Bounding Box enthaltenen Objekte der verschiedenen Tabellen Tankanlagen werden jeweils in eine separate Tabelle tabellenname_zh abgelegt. Anschliessend wird noch ein Primärschlüssel und ein räumlicher Index hinzugefügt (hier beispielhaft erläutert für die Tabellen pppoly und buildings).&lt;br /&gt;
&lt;br /&gt;
 -- Tabelle pppoly_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE pppoly_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM pppoly &lt;br /&gt;
   WHERE wgs84 &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE pppoly_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX pppoly_zh_wgs84_gist &lt;br /&gt;
   ON pppoly_zh &lt;br /&gt;
   using gist (wgs84);&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
 -- Tabelle buildings_zh aus BBox-Abfrage erstellen und füllen&lt;br /&gt;
 CREATE TABLE buildings_zh AS&lt;br /&gt;
 (&lt;br /&gt;
   SELECT *&lt;br /&gt;
   FROM buildings &lt;br /&gt;
   WHERE the_geom &amp;amp;&amp;amp; SetSRID( &#039;BOX3D( 8.45 47.45, 8.6 47.35 )&#039;::box3d, 4326 )&lt;br /&gt;
 );&lt;br /&gt;
 &lt;br /&gt;
 -- Primärschlüssel hinzufügen&lt;br /&gt;
 ALTER TABLE buildings_zh ADD PRIMARY KEY( gid );&lt;br /&gt;
 &lt;br /&gt;
 -- Räumlichen Index kreieren&lt;br /&gt;
 CREATE INDEX buildings_zh_the_geom_gist &lt;br /&gt;
   ON buildings_zh &lt;br /&gt;
   using gist (the_geom);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Weiterbildung]]&lt;/div&gt;</summary>
		<author><name>Juliane</name></author>
	</entry>
</feed>