Open xor22h opened 4 years ago
Taip, tu visiškai teisus. Anksčiau mes naudojome TileStash, o jau kažkur metus jau naudojame Tegola, tad docker kontaineriai nėra sutvarkyti.
Jei jūs sutvarkysite softo pakėlimo dalį - aš galėsiu pažiūrėti/pakomentuoti, ką reikia duombazėje padaryti, kad viskas gražiai pakiltų.
@tomass could not register providers: error fetching geometry type for layer (landuse8): ERROR: relation "gen_forest" does not exist (SQLSTATE 42P01)
gen_building.sql irgi failina:
psql:/src/db/gen_building.sql:76: ERROR: function stc_simplify_building(geometry, integer) does not exist
LINE 1: ... gen_building set status = 'DONE', way = st_multi(stc_simpli...
landuse8 sluoksniui reikia _genforest lentos, kurioje yra generalizuoti miškai. Iš principo po pirmo duomenų importo į db reikia paleisti generalizacijos funkcionalumą:
gen_way.sql
gen_water.sql
gen_building.sql
gen_forest.sql
gen_protected.sql
Jį reikia periodiškai iš naujo paleisti (atnaujinti). Bet šitie veiksmai užima nemažai laiko, tai tarkim openmap.lt atveju jie daromi tik kas savaitę.
Norint paleisti gen_buildiing reikia sudiegti funkcijas, kurios yra aplanke „db/func“. Iš principo reikia sudiegti visas funkcijas iš „func“ aplanko. sukurti visas lenteles ir mview'us iš „db/tables“ aplanko.
Ir čia dar ne viskas :-) Dar reikia po db atnaujinimo paleisti „db/update_water_label.sql“, kuri atnaujins vandens telkinių kartografines (išlankstytas pagal geometriją) etiketes. Jos kol kas turistiniame stiliuje (map.json) nenaudojamos (naudojamos topografiniame ir upių stiliuose), bet kaladėlėse ši info yra, tai be šitos info tegola skųsis (alternatyviai galima tegoloje atjungti sluoksnius _labelsc ir _labelsp)
Pridėjau docker exec -u postgres $CONTAINER_DB sh -c 'cat /src/db/func/*.sql | psql osm -f -'
Bandau generuoti building, ziuresiu kaip forest poto elgsis; Pastebejau kad kaikurie iš jų lėti...
https://github.com/openmaplt/vector-map/pull/293/files#diff-6f52613feaa16005aa471443d8ed37d4R14
Lėti, nes toks jau tas daiktas generalizacija. Bet be jos smulkesniuose masteliuose arba reikia atsisakyti braižyti kai kuriuos objektų tipus, arba kaladėlės žiauriai apsikrauna (kaladėlės dydis pradeda siekti 1-2Mb) ir tada tik patys naujausi greičiausi telefonai sugeba parodyti žemėlapį.
psql:/src/db/gen_building.sql:180: NOTICE: === Invalid geometry for gen_building.id=2921514
DO
UPDATE 820485
DELETE 455853
UPDATE 3241317
psql:/src/db/gen_building.sql:190: ERROR: syntax error at or near ";"
LINE 1: drop function gen_building_temp;
@tomass praejau buildings ir forest, ir kitas gen. Dabar beda coastline.
matau yra scriptas
#!/bin/bash
wget http://data.openstreetmapdata.com/water-polygons-split-3857.zip
unzip water-polygons-split-3857.zip
shp2pgsql -s 3857 -dDI water-polygons-split-3857/water_polygons.shp coastline_tmp | psql gis
rm -rf water-polygons-split-3857*
psql gis < recreate_coastline.sql
pg_dump gis -t coastline -c > coastline.sql
rm coastline.sql.bz2
bzip2 coastline.sql
bet gaunu 404
radau kitoje vietoje: https://osmdata.openstreetmap.de/download/coastlines-split-3857.zip Tikiuosi tai ko reikia :D
Radau kad coastline.sql.bz2
repositorijoje yra, bet:
SET
SET
SET
SET
SET
set_config
------------
(1 row)
SET
SET
SET
ERROR: index "coastline_geometry" does not exist
ERROR: table "coastline" does not exist
SET
SET
CREATE TABLE
ERROR: role "tomas" does not exist
COPY 37
CREATE INDEX
Docker'is jokio Tomas nepazysta. :(
ERROR dėl „index/table does not exist“ - nes leidžiama pirmą kartą, o automatiškai sugeneruotame skripte neįdėti „IF EXISTS“.
role „tomas“ does not exist, kiek matau dėl šitos eilutės:
ALTER TABLE public.coastline OWNER TO tomas;
Žodžiu irgi galima ignoruoti. Toliau matosi „COPY 37“ reiškia ir lentą sukūrė, ir duomenis sudėjo (žodžiu viskas turėtų veikti).
Aš pabandysiu naujai atsiųstą vandens poligonų failą (ačiū už nuorodą) ir įdėsiu naujai sugeneruotą coastline.sql.bz2
Šitas ištaiso nuorodą į vandens duomenų failą ir atnaujina coastline duomenis. https://github.com/openmaplt/vector-map/pull/295
Panašu kad docker-compose yra out of sync. Jei gerai pamenu tegola ir TileStash daro tą patį. Manau kažkuriuo metu buvo numigruota prie tegola, bet docker-compose neatnaujintas.