Witam,
jak eksportuje dane np linie przy pomocy ogr2ogr do formatu geojson to jest w nich kolumna o nazwie z_order i po niej sortuje malejąco, czy jest możliwość aby dało tak się zrobić z multipolygonami? W pliku osmconf.ini przy warstwie lini jest zawarta taka notka
#computed_attributes must appear before the keywords _type and _sql
computed_attributes=z_order
z_order_type=Integer
# Formula based on https://github.com/openstreetmap/osm2pgsql/blob/master/style.lua#L13
# [foo] is substituted by value of tag foo. When substitution is not wished, the [ character can be escaped with \[ in literals
z_order_sql="SELECT (CASE [highway] WHEN 'minor' THEN 3 WHEN 'road' THEN 3 WHEN 'unclassified' THEN 3 WHEN 'residential' THEN 3 WHEN 'tertiary_link' THEN 4 WHEN 'tertiary' THEN 4 WHEN 'secondary_link' THEN 6 WHEN 'secondary' THEN 6 WHEN 'primary_link' THEN 7 WHEN 'primary' THEN 7 WHEN 'trunk_link' THEN 8 WHEN 'trunk' THEN 8 WHEN 'motorway_link' THEN 9 WHEN 'motorway' THEN 9 ELSE 0 END) + (CASE WHEN [bridge] IN ('yes', 'true', '1') THEN 10 ELSE 0 END) + (CASE WHEN [tunnel] IN ('yes', 'true', '1') THEN -10 ELSE 0 END) + (CASE WHEN [railway] IS NOT NULL THEN 5 ELSE 0 END) + (CASE WHEN [layer] IS NOT NULL THEN 10 * CAST([layer] AS INTEGER) ELSE 0 END)"
czy tylko linie mogą posiadać tą wartość? Widziałem jeszcze kiedyś że pliki z kiedyś działającej strony eksportowane do geojson miały w polygonach kolumne sort_rank i chyba po nich też można było sortować
sort_rank: a suggestion for which order to draw features. The value is an integer where smaller numbers suggest that features should be “behind” features with larger numbers.
Dla porównania w przypadku domyślnego stylu mapy, który widać na osm.org multipolygony są sortowane po way_area. Dzięki temu mniejsze wskakują nad większe.
dzięki za odpowiedź, dokładnie chodzi mi o to aby mniejsze polygony pokazywały się nad większymi, próbowałem w ogr2ogr dodać w pliku osmconf ten tag way_area w (attributes=) ale nie pojawia się po wygenerowaniu pliku w geojson, spróbowałem jeszcze sortować po osm_way_id bo taki tag mi generuje automatycznie w geojson ale np budynki chowają mi się pod większymi obszarami zieleni więc po tym tagu nie posortuje mi raczej dokładnie. Czy jest mozliwość aby otrzymać ten tag w ogr2ogr? Czy bym musiał zrobić coś na wzór tak jak z liniami, czyli umieścić ten tag w computed_attributes? Czy zostaje mi tylko osm2pgsql żeby ten tag utworzyć?
[multipolygons]
# common attributes
# note: for multipolygons, osm_id=yes instantiates a osm_id field for the id of relations
# and a osm_way_id field for the id of closed ways. Both fields are exclusively set.
osm_id=yes
osm_version=no
osm_timestamp=no
osm_uid=no
osm_user=no
osm_changeset=no
# keys to report as OGR fields
attributes=name,name:en,name:pl,type,aeroway,amenity,admin_level,barrier,boundary,building,craft,geological,historic,land_area,landuse,leisure,man_made,military,natural,office,place,shop,sport,tourism,waterway,religion
# keys that should NOT be reported in the "other_tags" field
ignore=area,created_by,converted_by,source,time,ele,note,openGeoDB:,fixme,FIXME
# uncomment to avoid creation of "other_tags" field
other_tags=no
# uncomment to create "all_tags" field. "all_tags" and "other_tags" are exclusive
all_tags=no
W jakim programie używasz danych OSM? To mogłoby ułatwić pomoc.
Poza tym łatwiej Ci będzie jeśli rozdzielisz wszystko na osobne warstwy: budynki, woda, landuse, itp. Wtedy i bez sortowania ładnie powinno wyjść.
A jeśli chodzi o osm_id, to tylko identyfikator. Nie jest konieczny do konsumpcji danych, nie wnosi żadnej informacji poza… byciem unikatowym identyfikatorem.
Nawet osm_id się czasem przydaje - w OSM Carto jest stosowany m.in. po to, żeby położenie nazwy miejscowości nie zmieniało się jeśli nazwa przekracza granice (meta)kafelków: