Offline Rendern mit Mapnik und spatialite

Hallo zusammen,

bin zwar lange angemeldet habe aber lange nichts gemacht. Zur Zeit Träume ich von meinem eigenen CarPC mit eigener Software.
Ich versuche zur Zeit mit Mapnik Karten zu Rendern. Die Daten kommen aus eine spatialite. Ich habe versucht den manik-gerany Style so um zubauen das er auch mit der Spalialite läuft. Im Prinzip bin ich da auch relativ weit gekommen doch leider dauert das Render viel zu lange und in der spatiallit ist “nur” Hessen drin. In 4 Stufen von der Welt bis Frankfurt Dauert gute 10 Minuten.

Ich also auf der Suche nach einem Mapnik XML Style der das rendern zu Laufzeit möglich macht oder auf einen gescheiten weg wie man das anstellen könnte. Auch weiß ich nicht wie ich die spatiallite Strukturieren soll das es passt. Einmal gibt es ja den großen Topf (so ähnlich wie die Prgessdb) und einmal https://www.gaia-gis.it/fossil/spatialite-tools/wiki?name=spatialite_osm_map da wird es ein bisschen kleiner von daten volumen aber der Mapnikstyle kann man gar nicht verwenden weil ja die Struktur komplett anders ist. In dem Format finde ich aber zum Beispiel auch die Tunnel nicht.
Vorteil hier das sqlite viel ist sehr einfach aus dem pbf zu erzeugen.

Zur Zeit habe ich meine spatialite hier mit erzeugt https://code.google.com/p/maps4mac/wiki/osm2spatialite war nicht einfach da immer wieder der Speicher aus ging. Auch die Tools für Python und Windows waren nicht zu Installieren. Auf eine Linux VM ging es dann.

Zur Zeit “Teste” ich den Style mit einem kleinen Python Script aber das eigentlich Programm soll dann in c/c++ geschrieben werden.

Ich hoffe es ist einiger maßen mein Anliegen zu verstehen.

Schade das keiner Was zu sagen hat auch eine Frage wenn man es nicht verstehe fände ich gut.

naja, du hast dich da in eine ziemlich enge Nische gestellt.

Offline-Rendering basierend auf Spatial Light ist hier nicht gerade so toll verbreitet. Eventuell begründest du mal deine Softwareauswahl und beschreibst die Plattform (Hardware/OS) auf der das Teil laufen soll. Wird ja wohl nicht 'ne Smart-Watch sein :wink:

Ansonsten hab ich den Eindruck, dass derzeit einige wichtige Key-Accounts verschütt sind - es ist merkwürdig ruhig hier die letzten Tagen. Tippe auf “Resturlaub verbraten”.

Gruss
walter

Was würde denn gegen eine Lösung mit einem Geoserver auf deinem CarPC sprechen ?

erst mal sorry das ich jetzt erst schreibe irgend wie hat die Mail Benachrichtigung nicht funktioniert.

Eigentlich wollte ich auf den CarPC ein Gentoo Linux machen da Win7 nun endgültig darauf nicht mehr läuft. Leider schaffe ich den Absprung von Windows nicht so wirklich da es halt mein Täglich Brot ist. Habe es jetzt geschafft die 2.3 von Mapnik auf meine Windows Rechner zu bauen und habe mal den SQLite Treiber auf die Aktuelle Version Gehoben was schon mal ein Haufen Performens brachte ca. Faktor 8 auf den Fetten Windows Kiste. Wo bei ich mit Absicht nicht den Multikern benutze.

Der CarPC ist ein Epia 1200M Board mit SSD und 1 Byte Ram. Leider fürchte ich das es wohl wirklich zu alt ist und darauf es nie vernüftig laufen wird. Habe jetzt erstmal die Idee programm teile zu bauen so das man Sie testen kann und dann mal sehen wie viel Hardware man wirklich braucht.

Gestern habe ich was viel versprechnendes Raus gefunden die Layer wie sie im StandartStyle verwendet werden. Benutzen nicht SQL zum ein schränken sondern die Filterfunktion von Mapnik baut man das um kann man noch mal Richtig was raus holen an Zeit. Ok dafür musste ich die Datenbank etwas um bauen aber das geht mit meine Oracle Sql Kenntissen ganz gut.

Da ich für Routing eh ne Datenbank brauche und auch POI s möglich machen wollte bin ich auch die Idee gekommen eben kein Bilder als Karten zu verwenden. Auch habe ich die Hoffnung das der Platz bedrauf der Sqlite ganz so groß ist wie Bilder von ganz Deutschland. oder vielleicht noch mehr.

Ja ich weiß eine Ziemliche Nischen Idee mal sehen was daraus wird. Ich finde halt nur das die ganzen Software macher halt einfach auf die Schneller Hardware setzen grauselig der Strom muss auch irgendwo her kommen. Und machmal ist halt auch der Weg das Ziel.

Geoserver sind zu hungerig was Resourcen angeht zum mindestens was ich bis jetzt gesehen habe. Und wie gesagt es soll ohne Internet gehen. In den Kaparten oder der Wüste gibt es kein Internet per GSM. Oder auch hier mitten in Deutschland wo ich lebe. Ja ich muss zum SMS Schreiben in den Garten gehen auch wenn es keine glaubt.

Zur Zeit habe ich die Idee das es eigentlich so gehen müsste so das man die Daten auch relativ aktuell halten kann:

  1. osm.pbf laden
  2. Zur OSM DB Umbauen damit zum Beispiel https://code.google.com/p/maps4mac/wiki/osm2spatialite
  3. dann die Layer anders baue so das kleine Tabellen entstehen.

Und das dann Offline Rendern. 1 - 3 kann man “Zuhause” machen bzw. da wo entsprechner Platz und Performes zu Verfügung steht.
Da QT, Sqlite, Mapnik wenn ich das richtig weiß auch auf Andriod zu Verfügung stehen hoffe das vielleicht irgend wer finde der Lust hat das dann zu “Portieren”. Ich selbst hoffe die Windows und die Linux Variante bauen zu können. Hoffen wir mal das beim Rendern man sich nicht Finger verbrennt g.

Im Prinzip habe ich schon Idee was man da alles daraus machen könnte aber so lange ich die Grundlage noch nicht laufen will ich nicht darüber reden den es gibt schon zu viel Angefange Projekte die nie fertig werden. Ein ganz kleines bisschen habe ich die Hoffnung das die Idee ein bisschen gegen die Datenmonopolle helfen kann. Ich weiß was meine Firma den an Geld in den Rachen schmeist. Und wenn ich die Geschichte mit den Krankenwagen lese wird mir schlecht. Ich bin überzeugt das zusammen mit OSM besser machen kann wenn nur die Richtige Software macht und zwar als Opensource. Kranken wagen könnten Unmegen an Daten liefern und ich bin mir Sicher das hier genung fitte Leute gibt die das Sinnvoll ein arbeiten können. Und so haben beide was davon.

Was ich aber auch gelernt habe ist das bei meiner Idee mir auch noch einiges an Grundlagen fehlt was ich noch lernen muss und hier muss ich noch Partner finden mein Kollege der das GIS macht hat scheinbar nicht die richtige Lust dazu.

Zum beispiel muss ich noch die Weltsharpes um rechnen da meine daten zur Zeit alle das GPSmouse “format” haben und so Manik viel rechnen muss das liegt an der Idee das man dann bei den daten der mouse nicht so viel rechnen muss aber vielleicht ist es auch nicht sinvoll aber damit man das versteht / entscheiden kann muss man erst mal “+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over” lesen und verstehen können. Oder das “+proj=merc +datum=WGS84 +over”.

Mal sehen wo die Gedanken noch hin führen.

PS:Eine Oberfläche Ausser ein Native werde ich sicher nicht machen alle Tools die ich bis jetzt gesehen habe kommt nicht schönes / Ordentliches bei raus.
PPS: Meine C++ kennisse sollen nich ein rosten den in der Firma will man da weg (.Net) halt…

Ist wohl etwas wenig :wink:

Kenne mich wirklich mit fast keiner SW-Komponente aus, die du verwenden willst. Mir ist da nur SpatialLite durch den Kopf geschossen. Ist mir im QGIS-Umfeld als einfache freie spatiale DB über die Füße gelaufen. Ist das Zeug eventuell mit SQlite “verwandt”? Würde ich mir an deiner Stelle mal kurz ansehen.

Ansonsten viel Spass - und natürlich Erfolg - bei deinem Projekt.

Gruss
walter

Gibt es einen bestimmten Grund warum du nicht einfach NavIt oder vergleichbare Lösungen verwendest?

Wie bei den Bergen, wo manche nur raufklettern “weil sie da sind”.

Gruss
walter

Danke wambacher ich denke du verstehst mich !

Ja ich schreibe immer SQLite das ist die Datenbank und SpatialLite ist die erweiterung damit der Datenbank Kern Geofunktion hat wie zum Beispiel Indexe die mit Koordianten um gehen könnten oder Selects die Routen finden. Sofern die Daten im richtigen Format/Tabelle vorliegen.

Ich habe mich lange mit NavIt beschäftigt irgendwas war da was ich nicht gut fand weiß es jetzt aber nicht mehr.

Es soll ja nicht ein Reines Navi werden davon gibt es wirklich genug. Auch an so Sachen wie MP3 abspielen und OBD stehen auf der Wunschliste. Ich hasse es das mein Tomtom gehen die Musik im Auto an Brüllt. Plugin Schnittstelle vielleicht ?

Vielleicht auch was für Weltenbummler als Tagebuchfunktion / Unterstützung.

Ich bin nicht der der In der Stadt von a nach b kommen will und das möglichst effektiv.

http://www.superkarpata.com

http://www.spiegel.tv/#/filme/rallye-dresden-breslau-1/

http://www.auto-motor-und-sport.de/news/offroad-wohnmobil-selbst-gebaut-mercedes-expeditionsmobil-3863826.html

http://www.ff-expedition.de/

Das sind seiten auf den ich Stunden zu bringen kann. Ich Träume von einem Tatra 6x6 aber bis jetzt ist es nur ein Grand Cherrokie geworden vielleicht klappt wenigstens der Umbau. Zur zeit viel zu brav.

Alles klar. Also genauso wie bei PostgreSQL und PostGIS. Werd ich mir mal reinziehen.

Gruss
walter

Alles klar. Also genauso wie bei PostgreSQL und PostGIS. Werd ich mir mal reinziehen.

Gruss
walter

Genau so ist es

hallo wambacher kennst du dich auch mit den tags aus ?

um eine effetivere sql commands hin zu bekommen habe ich aus Tunnles nur noch yes und no gemacht. ja ich weiß jetzt das ist Informationsvernichtung aber im style habe ich noch nichts gefunden das die tunnels entsprechen anders rendert. Auch Qualt mich die frage ob es nicht nicht sein muss gewisse dinge zu ignorieren wenn man schnell rendern will. auf der anderen seite ist schon wenn auch alles was da ist gemalt wird.

Hasst du eine Idee wie ich die World sharps um rechnen kann das sie +proj=merc +datum=WGS84 +over richtig an gezeigt werden damit Mapnik die nicht umrechnen muss ?

Ich benutze extra zum rendern die XML Funktion von Mapnik damit sollte es dann später jedem möglich sein seine Karte anzupassen…

http://learnosm.org/en/osm-data/osm-in-qgis/
https://github.com/qgis/QGIS/blob/a3447dd9a346f6d5e08451b7c5666a37046435bc/src/analysis/openstreetmap/qgsosmimport.cpp
https://www.gaia-gis.it/fossil/spatialite-tools/wiki?name=spatialite_osm_raw

Irgend wie verstehe ich das nicht die Tools erstellen “nur” sehr einfache Datenbanken aber keines eine die so ist wie die von osm2pgsql vielleicht muss ich doch noch mal über den weg zu den Daten nachdenken. Den spatialite_osm_raw ist natürlich erst mal einfacher als das osm2spatialite und ich muss ja auch später die Routing daten mit der Map zu sammen bringen. Mir Quamlt der Schädel…

Ich glaube ein Problem ist das ich einfach das bei den spatialite tools (spatialite_osm_map) nicht beschrieben ist wie sie auch die daten kommen. Die LN Highway zum beispiel hat nur eine Spalte subtyp so das ich jetzt nicht weiß sind die Tunnels da drin oder nicht. Und mein den Layer für die tunnles auch nicht erzeugen kann weil die Information einfach fehlt. Das eine ist einfach vielleicht zu einfach das andere zu Komplex mal sehen ob ich irgendwann den Knoten zum Platzen bringe…

Vielleicht noch ein kleiner Hinweis. In OSM gibt es nur drei Datentypen. Punkte, Wege und Relationen. Alles andere wird über Tags und Verschachtelung hineininterpretiert. Das ist manchmal beim erfassen schon ein Problem, aber es macht auch das Auswerten nicht einfacher.
Daher hat sich jemand mal die Mühe gemacht und das ganze in ein Tool gepackt. Welches über die Jahre gewachsen ist. Viele Dinge (welche Tags etc.) sind dort sehr flexibel über style files gelöst. Aber es gibt halt auch komplizierte Dinge die nur “hart codiert” sind.
Wambacher hat Jahrelang mit einer Datenbank gearbeitet, welche der OSM-API-Datenbank sehr ähnlich war. Weil er keine Informationsverluste wollte. Letztenendes hat er aber dabei soviele Handstände machen müssen um alle Strukturen abbilden zu können, das er irgendwann zu osm2pgsql gekommen ist. Aber das war ein langer Weg.

im Prinzip ist mir das fast klar. Deshalb versuche ich ja die strucktur zu benutzen nur möchte ich mir den umweg über die Progress DB sparen. und das Tool kann halt nur mit der progress db und ich möchte ein SQLite db. die Performes die ich dann erreichen kann wenn ich die Layer dann nicht dynmisch auf den riesen tabelle mach sondern quasi tabelle für die Layer an legen macht mich zuversichtlich das es ein Lösung gibt. Klar ist dann der Style für mapnik halt seine DB braucht aber wenn das alles per scripts funktioniert kann es ja nachts alleine laufen.

Ich denke das viel größer problem ist das nun endlich mal ne ordentliche Linuxkiste bauen muss den was ich für hanstände machen muss um zum beispiel python mit allen Tools zum laufen zu bekommen ist abendteuerlich. osm2spatialite bekomme ich trotz nachtschicht ein fach nicht zu laufen…

select distinct on (p.way) p.way as way,l.highway as int_tc_type
from &prefix;_point p
join &prefix;_line l
on ST_DWithin(p.way,l.way,&dwithin_node_way;)
join (values
(‘tertiary’,1),
(‘unclassified’,2),
(‘residential’,3),
(‘living_street’,4),
(‘service’,5)
) as v (highway,prio)
on v.highway=l.highway
where p.highway=‘turning_circle’
order by p.way,v.prio

Wer kann mir diesen Select verdeutschen ?
ST_DWithin(p.way,l.way,&dwithin_node_way;) entsprich bei SQLite wohl ST_Within(p.way,l.way) >= &dwithin_node_way;

Aber der rest bleibt mir ein geheimniss

Vielleicht hilft es wenn du etwas mehr input gibts. Also zum beispiel Datensätze aus den betroffen Tabellen. Und auch woher du dieses Sql Statment hast.

sehe ich kein grosses Problem mit. Schließlich bestimmst du was du sehen willst. Und manchmal geht Performance halt vor Schönheit.

Ich würde das mit Qgis machen. Shape laden, Projektion ändern und als neues Shape abspeichern.

Gruss
walter

eventuell mit spatialite_osm_map? https://www.gaia-gis.it/fossil/spatialite-tools/wiki?name=spatialite_osm_map
Die versprechen zumindest, die OSM-Daten so zu verarbeiten, dass da am Ende vernünftige Geometrien rauskommen. Und das ist ja auch der Knackpunkt, der mich zu osm2pgsql gebracht hat.

Gruss
walter