Diskussion:PostGIS Terminal: Unterschied zwischen den Versionen
Stefan (Diskussion | Beiträge) |
Stefan (Diskussion | Beiträge) (→Data Features) |
||
Zeile 60: | Zeile 60: | ||
DF2. Neu immer Laden mit hstore (-h Parameter bei osm2pgsql). Zudem folgende Tabelle hinzufügen: | DF2. Neu immer Laden mit hstore (-h Parameter bei osm2pgsql). Zudem folgende Tabelle hinzufügen: | ||
− | CREATE VIEW | + | CREATE VIEW osm_all AS |
SELECT osm_id, name, tags, 'pt' AS gtyp, way, | SELECT osm_id, name, tags, 'pt' AS gtyp, way, | ||
FROM planet_osm_point | FROM planet_osm_point | ||
+ | UNION | ||
+ | SELECT osm_id, name, tags, 'ln' AS gtyp, way | ||
+ | FROM planet_osm_line | ||
UNION | UNION | ||
SELECT osm_id, name, tags, 'po' AS gtyp, way | SELECT osm_id, name, tags, 'po' AS gtyp, way |
Version vom 10. Mai 2011, 22:01 Uhr
Inhaltsverzeichnis
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 osm_all AS SELECT osm_id, name, tags, 'pt' AS gtyp, way, FROM planet_osm_point UNION SELECT osm_id, name, tags, 'ln' AS gtyp, way FROM planet_osm_line 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'