acalcutt / wdb-map-gen

OpenMapTiles basemap generation for WifiDB.net
Other
5 stars 0 forks source link

What's wrong with the water layer? #9

Open etresoft opened 2 years ago

etresoft commented 2 years ago

The readme says, "I still can't get the low level water layer to work right. Right now, I am using the water later from my example file 'osm_basemap.mbtiles' to fix this deficiency."

Could you elaborate on exactly what this problem is and how you fixed it?

I had been using the openmaptiles project. However, the latest update seems to have broken it. Your project now seems like the path of least resistance.

acalcutt commented 2 years ago

The last few days I've been testing "planetiler ( https://github.com/onthegomap/planetiler ) for generation of my OSM basemap. On top of being much faster, it does not have the water layer issue I have been having with this process.

The issue I was having was at high zoom levels, I think 11+, the water layers were missing. The diagram seems to indicate these layers come from the osm_water_polygon and osm_ocean_polygon tables, which I thought I was importing in load_water.sh, so I never figured out what I was missing to get these layers to show properly.

The way I worked around that was to make my own osm water/land/coastlines mbtiles using this ( https://github.com/acalcutt/wifidb-tileserver-gl/blob/master/osm_basemap/create_mbtiles.sh ) , then in my style I placed it over my water layers

      {
         "id":"water_fix",
         "type":"fill",
         "metadata":{
            "mapbox:group":"1444849382550.77"
         },
         "source":"osm_basemap",
         "source-layer":"water",
         "layout":{
            "visibility":"visible"
         },
         "paint":{
            "fill-color":"hsl(210, 67%, 85%)"
         }
      },
      {
         "id":"water-pattern_fix",
         "type":"fill",
         "metadata":{
            "mapbox:group":"1444849382550.77"
         },
         "source":"osm_basemap",
         "source-layer":"water",
         "layout":{
            "visibility":"visible"
         },
         "paint":{
            "fill-translate":[
               0,
               2.5
            ],
            "fill-pattern":"wave"
         }
      },
etresoft commented 2 years ago

I looked at Planetiler but I don't have a machine with that much RAM. I don't want to put anything on AWS until I know it will work and what configuration it will require. I've learned not to accept any claims about performance or functionality until I can reproduce them. I did get non-updating openmaptiles to work last year. I guess I'll just roll back to that.

acalcutt commented 2 years ago

This wdb-map-gen worked pretty well on my virtual server with 64GB memory, minus the water later issue. I would love to figure that out one of these days.

I will admit, the planetiler does seem to use a lot more ram. I am giving my virtual server 115GB memory and 200GB swap right now and using --nodemap-storage=mmap so it can use some of the swap instead of just ram. Though it might run with less adjusting Xmx and Xms.

using this right now for command

java -Xmx100g -Xms100g \
    -XX:OnOutOfMemoryError="kill -9 %p" \
    -jar planetiler-dist-0.3-SNAPSHOT-with-deps.jar \
    --download --osm-path=$EXPORT_DIR/$PBF \
    --download-threads=10 --download-chunk-size-mb=1000 \
    --fetch-wikidata --extra_layers=power,atv \
    --mbtiles=output.mbtiles \
    --nodemap-type=sparsearray --nodemap-storage=mmap --optimize_db=true