2016-03-17 2 views
0

Je veux obtenir tous les nœuds, chemins et relations contenant certaines balises et le fichier de sortie doit également contenir les chemins dépendants et les nœuds. Ainsi, par exemple, je veux chercher toutes les relations avec les commodités et obtenir non seulement les relations mais aussi les chemins dépendants et les nœuds. Pareil pour tous les chemins avec les mêmes tags et leurs nœuds associés et enfin tous les nœuds.Osmose - obtenir tous les nœuds/moyens/relations avec les mêmes balises

Actuellement, j'ai trouvé une solution de travail, mais ce script prend beaucoup de temps à traiter, car il lit effectivement le fichier de carte du monde 3 fois et fusionne les données par la suite. J'espère que quelqu'un pourrait me diriger vers une solution plus "simple" pour augmenter la vitesse.

btw. J'ai placé les options de Java à "-Xmx14G -server" mais le manuscrit emploie seulement 8G de mémoire (la machine a 32G RAM) selon le gestionnaire de tâches (Windows - désolé les gens ;-))

Ainsi ceci est le script:

set readfile=--read-pbf-fast file=planet-latest.osm.pbf workers=4 
set logprogress=--log-progress interval=10 

set acceptlorestags=^ 
place=country,state,region,province,district,county,municipality,island,islet^
natural=sea,water,wetland,beach,coastline,marsh^
admin_level=1,2,3,4^
water=*^
wetland=* 

call bin\osmosis.bat^
%readfile%^
--tf accept-relations^
%acceptlorestags%^
--used-way^
--used-node^
%logprogress% label="lores_rel"^
^ 
%readfile%^
--tf reject-relations^
--tf accept-ways^
%acceptlorestags%^
--used-node^
%logprogress% label="lores_way"^
^ 
%readfile%^
--tf reject-relations^
--tf reject-ways^
--tf accept-nodes^
%acceptlorestags%^
%logprogress% label="lores_node"^
^ 
--merge^
--merge^
%logprogress% label="map_lores"^
--mapfile-writer file=map_lores.map type=ram 

Répondre

0

On ne devrait pas utiliser un marteau pour une vis. Je suis passé à osmfilter et ça marche beaucoup plus vite maintenant.

Le processus complet:

convertir le PBF à o5m (à environ 30 minutes.):

set source=planet-latest.o5m 
set drop2= --drop-tags="source= fixme= created_by=" 
osmfilter.exe %source% --keep="natural=sea =coastline admin_level=1 =2 =3 =4 place=ocean =sea" %drop2% > map_lowres.osm 

:

osmconvert.exe planet-latest.osm.pbf -o=planet-latest.o5m 

créer un fichier xml filtré (environ 30 min.) convertir en mapsforge:

set osmosis=tag-conf-file=tagmapping.xml zoom-interval-conf=8,5,11,15,12,20 
call bin\osmosis.bat --read-xml file=map_lowres.osm --mapfile-writer file=map_lowres.map %osmosis% 

Veillez à ce que le fichier mapfile nécessite encore des jours ou des semaines. Envisagez d'utiliser des cadres de délimitation et créez plusieurs fichiers de carte, ce qui est beaucoup plus rapide que de traiter le monde entier à la fois.