Diskussion:PostGIS Terminal: Unterschied zwischen den Versionen

Aus Geoinformation HSR
Wechseln zu: Navigation, Suche
Zeile 1: Zeile 1:
== ==
+
== Interessante Queries ==
  
 
   --
 
   --

Version vom 10. Mai 2011, 20:29 Uhr

Interessante Queries

 --
 -- Key-Value Statistics of OSM Data
 -- Return all key-value-pairs of type 'enum' without some 
 -- types numeric, date/time etc. chosen by hand:
 --
 SELECT MIN(keys.key) as feldname, hstore(p.tags)->keys.key, count(*)
 FROM osm_point p, (
   SELECT key, count(*) 
   FROM (
     SELECT (each(tags)).key FROM planet_osm_point
   ) AS stat
 GROUP BY key HAVING count(*) > 400
   AND key NOT LIKE 'name%'
   AND key NOT LIKE 'addr:%'
   AND key NOT ILIKE 'FIXME'
   AND key NOT ILIKE 'openGeoDB:%'
   AND key NOT LIKE 'note:%'
   AND key NOT LIKE '%_ref'
   AND key NOT LIKE '%description%'
   AND key NOT LIKE 'contact:%'
   AND key NOT LIKE 'operator:%'
   AND key NOT LIKE 'uic_%'
   AND key NOT LIKE 'TMC%'
   AND key NOT LIKE 'uic_%'
   AND key NOT LIKE 'direction%'
   AND key NOT LIKE 'is_in%'
   AND key NOT LIKE 'wikipedia%'
   AND key NOT IN ('ele','ref','url','website','email','maxspeed','converted_by','layer','level','phone',  
                   'mobility:station_id','information','opening_hours','date','time','collection_times',
                   'operator', 'colour', 'fee','nat_name','alt_name','population','seats','postal_code', 
                   'capacity','line','lines','maxheight','reg_name')
 ) keys
 WHERE hstore(p.tags)->keys.key >
 GROUP BY hstore(p.tags)->keys.key HAVING count(*) > 1
 ORDER by 1,3 desc

Feature Requests

Security Features

SF1. Rechte entziehen, damit User Tables und Views nicht erzeugen oder löschen können!!!

 Schema nicht PUBLIC? Test: create table customer (id serial, name text); drop table customer; !!!
 Konfigurieren PostgreSQL Server (postgresql.conf parameters): Disabling autovacuum daemon, fsync=off etc.

=> RMI

SF2. Einbau Timeout als Parameter der PostgreSQL-Verbindung in process-query.php (oder als "statement_timeout (60000)" in postgresql.conf); siehe [1]

 SET STATEMENT_TIMEOUT TO 60000;
 SET transaction_read_only TO TRUE;
 ALTER DATABASE x SET default_transaction_read_only = on;

=> RMI

SF3. Logging, das IP, Query-String und Response-Infos (success/error/etc. und Prozess-Zeit) speichert. Lösung über process-query.php oder Analyse (grep) Apache-Log? => RMI

Data Features

DF1. Style-Datei anpassen, so dass Tabellennamen ohne "planet" und ohne Underscores erzeugt werden, also z.B. anstelle „planet_osm_point“ nur „osmpoint“. => RMI

DF2. Neu immer Laden mit hstore (-h Parameter bei osm2pgsql). Zudem folgende Tabelle hinzufügen:

 CREATE VIEW osmallv AS 
 SELECT osm_id, name, tags, 'pt' AS gtyp, way,  
 FROM planet_osm_point
 UNION
 SELECT osm_id, name, tags, 'po' AS gtyp, way
 FROM planet_osm_polygon
 CREATE INDEX member_name_idx
 ON member
 USING btree
 (upper(last_name), upper(first_name))
 WITH (FILLFACTOR=100);
 
 ALTER TABLE member CLUSTER ON member_name_idx;
 VACUUM FREEZE ANALYZE;

=> RMI

DF3. Einrichten eines Cron-Jobs, der einmal pro Nacht die Schweiz neu einspielt (Bitte Vorschlag). => RMI

DF4. Siehe NF2. => RMI

New Functionality/Refactoring

NF1. Refactoring Marker Query from Text class to Vector Class (see Test Cases for Marker Query below). => Kemper/Hengartner

NF2. „Updated: 2011-03-25“ ist zurzeit fix in config.php festgehalten und wird über "?" angezeigt. Schöner wäre eine Anzeige über eine DB-Query (about-db-query.php).

NF3. Anzeige/Einfügen Tabellen und -Attribute als <options...> (laden via about-db-query.php).

NF4. Erweiterung MArker Query um Attribut 'icon', mit dem man Icons von externen Quellen (url) darstellen kann.

Nice-to-have

  • Permalink: Uebergabe Query als URL
  • Anzeige (Test), ob Server überhaupt online ist.
  • Vollständig DB-unabhängig machen! D.h. "Weitere Parameter" (aus config.php) in HTML/Javascript laden.
  • DB Zugangsparameter mit Port und Zugangsweise (Text, TSL, SSL) erweitern.
  • Besseres Verwalten von Layern, die aus Map und Marker Queries entstanden sind.
  • Markers mit Maus-über ("hover") - wären toll... nicht Popup und wegklicken müssen! -
  • Wie geht das mit Wait-Cursor in OpenLayers???
  • Verarbeiten von OSM XAPI-Calls (XAPI nach SQL transformieren)?
  • Aufrufen von Google Earth (KML network link), falls output mit ST_KML und alias kml (als einzigem Ausgabe-Feld) angegeben.

Test Cases for Marker Query

 --- marker query (must have exactly field names lon, lat, title and description):
 SELECT X(p2.way) AS lon, Y(p2.way) AS lat, 'Briefkasten' AS title, p2.ref AS description
 FROM planet_osm_polygon p1
 JOIN planet_osm_point p2 ON CONTAINS(p1.way, p2.way)
 WHERE p1.name = 'Uster'
 AND p2.amenity = 'post_box'
 --- Extension with user defined marker icon (attribute 'icon'):
 SELECT X(p2.way) AS lon, Y(p2.way) AS lat, 'Briefkasten' AS title, p2.ref AS description, 'http://myserver/marker.png' as icon 
 FROM planet_osm_polygon p1
 JOIN planet_osm_point p2 ON CONTAINS(p1.way, p2.way)
 WHERE p1.name = 'Uster'
 AND p2.amenity = 'post_box'