<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de-CH">
	<id>https://giswiki.ch/index.php?action=history&amp;feed=atom&amp;title=GISpunkt-Seminar_PostGIS-Uebungen</id>
	<title>GISpunkt-Seminar PostGIS-Uebungen - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://giswiki.ch/index.php?action=history&amp;feed=atom&amp;title=GISpunkt-Seminar_PostGIS-Uebungen"/>
	<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=GISpunkt-Seminar_PostGIS-Uebungen&amp;action=history"/>
	<updated>2026-04-29T09:04:20Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Geometa Lab OST</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://giswiki.ch/index.php?title=GISpunkt-Seminar_PostGIS-Uebungen&amp;diff=34546&amp;oldid=prev</id>
		<title>Stefan: hat „GISpunkt-Seminar PostGIS Uebungen“ nach „GISpunkt-Seminar PostGIS-Uebungen“ verschoben</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=GISpunkt-Seminar_PostGIS-Uebungen&amp;diff=34546&amp;oldid=prev"/>
		<updated>2011-09-13T11:26:21Z</updated>

		<summary type="html">&lt;p&gt;hat „&lt;a href=&quot;/GISpunkt-Seminar_PostGIS_Uebungen&quot; class=&quot;mw-redirect&quot; title=&quot;GISpunkt-Seminar PostGIS Uebungen&quot;&gt;GISpunkt-Seminar PostGIS Uebungen&lt;/a&gt;“ nach „&lt;a href=&quot;/GISpunkt-Seminar_PostGIS-Uebungen&quot; title=&quot;GISpunkt-Seminar PostGIS-Uebungen&quot;&gt;GISpunkt-Seminar PostGIS-Uebungen&lt;/a&gt;“ verschoben&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de-CH&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 13. September 2011, 11:26 Uhr&lt;/td&gt;
				&lt;/tr&gt;
&lt;!-- diff cache key giswiki:diff::1.12:old-34505:rev-34546 --&gt;
&lt;/table&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
	<entry>
		<id>https://giswiki.ch/index.php?title=GISpunkt-Seminar_PostGIS-Uebungen&amp;diff=34505&amp;oldid=prev</id>
		<title>Stefan: Die Seite wurde neu angelegt: „Zurück zu GISpunkt-Seminar PostGIS.  Hier einige Abfragen die mit dem Übungsdatensatz gemacht werden können. Die Übungsdaten können Sie von [http://www.c…“</title>
		<link rel="alternate" type="text/html" href="https://giswiki.ch/index.php?title=GISpunkt-Seminar_PostGIS-Uebungen&amp;diff=34505&amp;oldid=prev"/>
		<updated>2011-09-12T13:19:29Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „Zurück zu &lt;a href=&quot;/GISpunkt-Seminar_PostGIS&quot; class=&quot;mw-redirect&quot; title=&quot;GISpunkt-Seminar PostGIS&quot;&gt;GISpunkt-Seminar PostGIS&lt;/a&gt;.  Hier einige Abfragen die mit dem Übungsdatensatz gemacht werden können. Die Übungsdaten können Sie von [http://www.c…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Zurück zu [[GISpunkt-Seminar PostGIS]].&lt;br /&gt;
&lt;br /&gt;
Hier einige Abfragen die mit dem Übungsdatensatz gemacht werden können. Die Übungsdaten können Sie von [http://www.carto.net/postgis/pgch_uebungsdaten.zip http://www.carto.net/papers/pgch_uebungsdaten.zip] herunterladen. Sie benötigen die shapefiles &amp;quot;gemeinden&amp;quot; und &amp;quot;fluesse&amp;quot; und das SQL File staedte_ch.sql&lt;br /&gt;
&lt;br /&gt;
=== Neue räumliche Tabelle erstellen und bevölkern ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Eine neue räumliche Tabelle &amp;quot;seen&amp;quot; soll erstellt und alle Seen von der Tabelle&lt;br /&gt;
-- &amp;quot;gemeinden&amp;quot; eingespielt werden. Danach soll ein räumlicher Index auf der neuen Tabelle&lt;br /&gt;
-- &amp;quot;seen&amp;quot; erstellt werden und die Seen aus der Tabelle &amp;quot;gemeinden&amp;quot; gelöscht werden&lt;br /&gt;
&lt;br /&gt;
-- neue Tabelle kantone mit Primary Key erstellen&lt;br /&gt;
CREATE TABLE seen&lt;br /&gt;
(&lt;br /&gt;
  gid integer PRIMARY KEY,  &lt;br /&gt;
  name text&lt;br /&gt;
);&lt;br /&gt;
-- räumliche Geometriespalte dazufügen&lt;br /&gt;
SELECT AddGeometryColumn(&amp;#039;public&amp;#039;, &amp;#039;seen&amp;#039;, &amp;#039;the_geom&amp;#039;, 21781, &amp;#039;MULTIPOLYGON&amp;#039;, 2);&lt;br /&gt;
-- Daten von Gemeinde hereinspielen wo kt = 0 (sind Seen), sollten 22 Datensätze sein&lt;br /&gt;
INSERT INTO seen &lt;br /&gt;
  SELECT gid, name, the_geom FROM gemeinden WHERE kt = 0 AND gmde &amp;gt;= 9000;&lt;br /&gt;
-- Seen und liechtensteinische Gemeinden aus gemeindetabelle löschen&lt;br /&gt;
DELETE FROM gemeinden WHERE kt = 0;&lt;br /&gt;
-- neuen räumlichen index erstellen bei der tabelle seen&lt;br /&gt;
CREATE INDEX seen_the_geom_gist&lt;br /&gt;
  ON seen USING gist (the_geom GIST_GEOMETRY_OPS);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: neue Tabelle Seen mit Index und 36 Datensätzen&lt;br /&gt;
&lt;br /&gt;
=== Flächenberechnungen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Selektiere alle Gemeinden, die eine Fläche grösser als 100 km2 haben&lt;br /&gt;
SELECT name, kt, Round(ST_Area(the_geom) / 1000000) As flaeche FROM gemeinden&lt;br /&gt;
  WHERE (ST_Area(the_geom) / 1000000) &amp;gt; 100&lt;br /&gt;
  ORDER BY flaeche DESC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: Bagnes, 23, 283; Davos, 18, 255; Zermatt, 23, 243; ... insgesamt 48 Datensätze (wenn Seen in vorherigem Schritt gelöscht)&lt;br /&gt;
&lt;br /&gt;
=== Südlichste Geometrie ermitteln ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Selektiere die südlichste Gemeinde des Kantons Graubünden&lt;br /&gt;
-- kt id 18 ist Graubünden&lt;br /&gt;
&lt;br /&gt;
SELECT name FROM gemeinden WHERE kt = 18 ORDER BY ST_YMIN(ST_ENVELOPE(the_geom)) ASC LIMIT 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: Roveredo (GR)&lt;br /&gt;
&lt;br /&gt;
=== Koordinatentransformation ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Die Koordinate von Bern (Tabelle staedte_schweiz), urspr. Landeskoordinate,&lt;br /&gt;
-- als Lat/Lon, WGS84 ausgeben&lt;br /&gt;
SELECT AsText(Transform(the_geom,4326)) FROM staedte_schweiz WHERE &amp;quot;FULL_NAME&amp;quot; = &amp;#039;Bern&amp;#039;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Resultat: POINT(7.46666670742301 46.9166667102846)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Eine Koordinate von einem fremden Koordinatensystem in WGS 84 transformieren:&lt;br /&gt;
SELECT ST_AsText(ST_Transform(ST_GeomFromText(&amp;#039;POINT(484344.9842453949 1480036.13293874)&amp;#039;,32648),4326))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Resultat: POINT(104.855408409113 13.3878890725056) -- WGS 84 Grad (EPSG:4326)&lt;br /&gt;
&lt;br /&gt;
=== Distanzberechnung ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Sphärische Distanz (spheroid) zwischen Bern und Zürich, basierend auf Bessel 1841 Ellipsoid&lt;br /&gt;
SELECT ST_distance_spheroid(&lt;br /&gt;
  (SELECT Transform(the_geom,4326) FROM staedte_schweiz WHERE &amp;quot;FULL_NAME&amp;quot; = &amp;#039;Bern&amp;#039;),&lt;br /&gt;
  (SELECT Transform(the_geom,4326) FROM staedte_schweiz WHERE &amp;quot;FULL_NAME&amp;quot; = &amp;#039;Zürich&amp;#039;),&lt;br /&gt;
  &amp;#039;SPHEROID[&amp;quot;Bessel 1841&amp;quot;,6377397.155,299.1528128]&amp;#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: 96139.7469334825&lt;br /&gt;
&lt;br /&gt;
=== Kombinierte Distanzabfragen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Selektiere Orte (Tabelle staedte_schweiz) und zugehörige Seen (Tabelle Seen) die innerhalb eines Radius&lt;br /&gt;
-- von 75 km von Bern sind und ein Ort nicht mehr als 5km von einem See entfernt ist (Tabelle Seen)&lt;br /&gt;
-- Achtung: kartesische Distanz, nicht ellipsoidische!&lt;br /&gt;
SELECT sta.&amp;quot;FULL_NAME&amp;quot;, se.name FROM staedte_schweiz sta, seen se&lt;br /&gt;
  WHERE ST_DWithin(sta.the_geom,(SELECT the_geom FROM staedte_schweiz WHERE &amp;quot;FULL_NAME&amp;quot; = &amp;#039;Bern&amp;#039;),75000) AND&lt;br /&gt;
  ST_DWithin(sta.the_geom,se.the_geom,5000) ORDER BY sta.&amp;quot;FULL_NAME&amp;quot; ASC, se.name ASC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: Adligenswil, Vierwaldstättersee; Aecherli, Lungerer See; Aecherlis, Sarnersee; ...&lt;br /&gt;
&lt;br /&gt;
=== Selektiere angrenzende Flächen mit ST_Touches() ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Selektiere alle Gemeinden die an den Zürichsee grenzen&lt;br /&gt;
&lt;br /&gt;
SELECT name FROM gemeinden&lt;br /&gt;
  WHERE ST_TOUCHES(the_geom,(SELECT the_geom FROM seen WHERE name = &amp;#039;Zürichsee&amp;#039;)) ORDER BY name;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: 25 Records; Altendorf, Erlenbach (ZH, Freienbach, ...&lt;br /&gt;
&lt;br /&gt;
=== Crosses(), Selektion von Flächen die von Linien geschnitten werden ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Es sollen sämtliche Gemeinden abgefragt durch die der Fluss Emme fliesst&lt;br /&gt;
&lt;br /&gt;
SELECT g.name FROM gemeinden g, fluesse f&lt;br /&gt;
  WHERE f.name = &amp;#039;Emme&amp;#039; AND f.the_geom &amp;amp;&amp;amp; g.the_geom AND ST_Crosses(f.the_geom,g.the_geom)&lt;br /&gt;
  ORDER by name ASC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Geomunion() und Crosses() Abfrage (MULTIPOLYGON und MULTILINESTRING) ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Prüfe ob die kombinierten Einzel-Linienelemente des Rheinflusses die Gemeindegeometrie von Basel durchlaufen&lt;br /&gt;
-- Resultat ergibt &amp;quot;t&amp;quot; (true) oder &amp;quot;f&amp;quot; (false)&lt;br /&gt;
SELECT ST_Crosses(&lt;br /&gt;
  (SELECT the_geom FROM gemeinden WHERE name = &amp;#039;Basel&amp;#039;),&lt;br /&gt;
  (SELECT geomunion(the_geom) FROM fluesse WHERE name = &amp;#039;Rhein&amp;#039; GROUP BY name));&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: t&lt;br /&gt;
&lt;br /&gt;
=== Flächen zusammenfassen mit Geomunion() ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Eine neue räumliche Tabelle &amp;quot;kantone&amp;quot; soll erstellt und Gemeinden aus der Tabelle&lt;br /&gt;
-- &amp;quot;gemeinden&amp;quot; zu Kantonen zusammengefasst eingespielt werden. Danach soll ein räumlicher Index auf der neuen Tabelle&lt;br /&gt;
-- &amp;quot;kantone&amp;quot; erstellt werden&lt;br /&gt;
&lt;br /&gt;
-- neue Tabelle kantone mit Primary Key erstellen&lt;br /&gt;
CREATE TABLE kantone&lt;br /&gt;
(&lt;br /&gt;
  gid integer PRIMARY KEY,  &lt;br /&gt;
  name text&lt;br /&gt;
);&lt;br /&gt;
-- räumliche Geometriespalte dazufügen&lt;br /&gt;
SELECT AddGeometryColumn(&amp;#039;public&amp;#039;, &amp;#039;kantone&amp;#039;, &amp;#039;the_geom&amp;#039;, 21781, &amp;#039;MULTIPOLYGON&amp;#039;, 2);&lt;br /&gt;
-- Kantonsgeometrien von Gemeindegeometrien zusammenfassen mit Geomunion, gruppiert nach Kantons-ID &amp;quot;kt&amp;quot;&lt;br /&gt;
-- ST_Multi() erzwingt Multigeometrien wegen dem constraint, es sollten 26 Datensätze resultieren&lt;br /&gt;
INSERT INTO kantone &lt;br /&gt;
  SELECT kt, &amp;#039;&amp;#039;, ST_Multi(Geomunion(the_geom)) FROM gemeinden GROUP BY kt;&lt;br /&gt;
-- neuen räumlichen index erstellen bei der tabelle seen&lt;br /&gt;
CREATE INDEX kantone_the_geom_gist&lt;br /&gt;
 ON kantone USING gist (the_geom GIST_GEOMETRY_OPS);&lt;br /&gt;
-- danach manuell die Kantonsnamen ergänzen, etwa in QGIS, OpenJump oder GDV Spatial Commander&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: neue Tabelle mit 26 Kantonsgeometrien und räumlicher Index&lt;br /&gt;
&lt;br /&gt;
=== Point in Polygon mit ST_Within() ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Es soll abgefragt werden wieviele Städte/Orte in jedem Kanton liegen&lt;br /&gt;
-- Voraussetzung ist, dass Sie Ihren Kantonen Namen vergeben haben&lt;br /&gt;
&lt;br /&gt;
SELECT k.name, COUNT(*) FROM&lt;br /&gt;
  staedte_schweiz s, kantone k&lt;br /&gt;
  WHERE ST_WITHIN(s.the_geom,k.the_geom) GROUP BY k.name ORDER BY k.name;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: Aargau, 146; Appenzell Ausserrhoden, 20; Appenzell Innerrhoden, 8; ...&lt;br /&gt;
&lt;br /&gt;
=== Buffer() und Point in Polygon ST_Within() ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Selektierte Orte die innerhalb eines Buffers von 10 km des Flusses Emme liegen&lt;br /&gt;
&lt;br /&gt;
SELECT DISTINCT &amp;quot;FULL_NAME&amp;quot; FROM staedte_schweiz&lt;br /&gt;
  WHERE ST_Within(&lt;br /&gt;
   the_geom,&lt;br /&gt;
   (SELECT ST_Buffer(the_geom,10000) FROM fluesse WHERE name = &amp;#039;Emme&amp;#039;))&lt;br /&gt;
  ORDER BY &amp;quot;FULL_NAME&amp;quot; ASC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: 144 Orte; Aedermannsdor, Aelgäu, Aeschau, Affoltern, ...&lt;br /&gt;
&lt;br /&gt;
Dazu gäbe es eine schnellere Alternative: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT DISTINCT staedte_schweiz.full_name FROM staedte_schweiz, fluesse&lt;br /&gt;
  WHERE ST_DWithin(staedte_schweiz.the_geom, fluesse.the_geom, 10000)&lt;br /&gt;
  AND fluesse.name = &amp;#039;Emme&amp;#039;&lt;br /&gt;
  ORDER BY full_name ASC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Anzahl Teilgeometrien ermitteln ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Selektiere alle Kantone die aus 4 oder mehr Teilgeometrien bestehen&lt;br /&gt;
&lt;br /&gt;
SELECT name, ST_NumGeometries(the_geom) AS NrGeom &lt;br /&gt;
  FROM kantone&lt;br /&gt;
  WHERE ST_NumGeometries(the_geom) &amp;gt;= 4 &lt;br /&gt;
  ORDER BY name ASC;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: Bern, 4; Fribourg, 4; Solothurn, 4&lt;br /&gt;
&lt;br /&gt;
=== ST_DWithin() ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Given a set of Point objects, filter out the Points from this set &lt;br /&gt;
-- that lie on a straight line within a certain amount of tolerance&lt;br /&gt;
&lt;br /&gt;
SELECT p.* FROM yourPoints AS p, yourLine AS line &lt;br /&gt;
  WHERE ST_DWithin(p.the_geom, line.the_geom, yourTolerance)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Räumliche Beziehungen mit ST_Relate() ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Es sollen sämtliche Seen abgefragt werden die im Kanton Bern sind oder an den Kanton Bern grenzen&lt;br /&gt;
-- Voraussetzung ist, dass Sie Ihren Kantonen Namen vergeben haben&lt;br /&gt;
&lt;br /&gt;
-- Selektiere alle Seen die innerhalb des Kantons Bern liegen&lt;br /&gt;
SELECT s.name, &amp;#039;innerhalb&amp;#039; AS Relation FROM seen s, kantone k&lt;br /&gt;
  WHERE k.name = &amp;#039;Bern&amp;#039; AND ST_RELATE(s.the_geom,k.the_geom) = &amp;#039;FF2F1F212&amp;#039; ORDER BY k.name;&lt;br /&gt;
&lt;br /&gt;
-- Selektiere alle Seen die an der Grenze zum Kanton Bern liegen&lt;br /&gt;
SELECT s.name, &amp;#039;angrenzend&amp;#039; AS Relation FROM seen s, kantone k&lt;br /&gt;
  WHERE k.name = &amp;#039;Bern&amp;#039; AND ST_RELATE(s.the_geom,k.the_geom) = &amp;#039;FF2F11212&amp;#039; ORDER BY k.name;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat 1: Brienzersee, innerhalb; Thunersee, innerhalb&lt;br /&gt;
&lt;br /&gt;
Resultat 2: Lac de Neuchâtel, angrenzend; Bielersee / Lac de Bienne, angrenzend&lt;br /&gt;
&lt;br /&gt;
=== Suche Punkt entlang einer Linie mit Linear Referencing ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-- Selektiere die Gemeinde die sich 20 km vom Ursprung der Emme befindet&lt;br /&gt;
-- Achtung, die Emme wurde offenbar von der Mündung bis zum Ursprung digitalisiert&lt;br /&gt;
-- die Geometrie muss daher umgedreht werden&lt;br /&gt;
-- ST_GeometryN() wird verwendet, da es sich um einen Multilinestring handelt&lt;br /&gt;
&lt;br /&gt;
SELECT name FROM gemeinden WHERE&lt;br /&gt;
 ST_WITHIN((SELECT ST_line_interpolate_point(ST_Reverse(ST_GeometryN(the_geom,1)),(20000 / ST_LENGTH(the_geom)))&lt;br /&gt;
  FROM fluesse WHERE name = &amp;#039;Emme&amp;#039;),the_geom);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Resultat: Eggiwil&lt;br /&gt;
&lt;br /&gt;
=== Cut Shapefiles At A Border ===&lt;br /&gt;
&lt;br /&gt;
Use ST_Intersection in conjunction with ST_Intersects.  ST_Intersection will&lt;br /&gt;
clip the geometries so what is left is what falls inside both geometries.&lt;br /&gt;
&lt;br /&gt;
So something like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
SELECT i.gid, ST_Intersection(country.the_geom, i.the_geom)&lt;br /&gt;
FROM country &lt;br /&gt;
INNER JOIN someothertable i ON ST_Intersects(country.the_geom, i.the_geom)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For your countries that are  linestrings, you will need to convert them to&lt;br /&gt;
polygons with something like ST_BuildArea, see&lt;br /&gt;
http://postgis.refractions.net/documentation/manual-svn/ST_BuildArea.html&lt;br /&gt;
&lt;br /&gt;
=== Set of closest Points to a Location (ST_Distance) ===&lt;br /&gt;
&lt;br /&gt;
Say you have geometry A and geometry B and you want to know what set of points on Geometry A are closest to Geometry B: Which points in ST_Distance are selected? Return distance, startpoint, endpoint.&lt;br /&gt;
&lt;br /&gt;
SELECT ST_Intersection(A, ST_Buffer(B, ST_Distance(A,B) + 0.001) );&lt;br /&gt;
&lt;br /&gt;
Solution: 1) First find the minimum distance. 2) Figure out which point/pointset on the geometry satisfies the minimum distance using buffer and intersection (with minimum distance being the buffer distance).&lt;br /&gt;
&lt;br /&gt;
Then if you really wanted the points -- you would use the imaginary not yet invented ST_DumpPoints should the result not be point or be a geometry collection of some sort.&lt;/div&gt;</summary>
		<author><name>Stefan</name></author>
	</entry>
</feed>