[Talk-de] Dictonaries in OSM
Andreas Hubel
andi at saerdnaer.de
So Nov 20 02:59:34 UTC 2011
Hallo,
Zuerst mal ein paar kurze Definitionen.
Für mich sind in dieser Mail
* ein Wert ein einfacher String key = "bla",
* eine Liste mehrere Werte key = ["bla", "blub"] und
* ein Dictionary eine Liste, bei der die einzelnen Werte benannt sind: key = {subkey1: "bla", subkey2: "blub"}
In OSM gibt es öfter den Fall, das man für einen Tag mehrere Werte angeben muss, z.B. bei Packstationen an denen man sowohl Pakete aufgeben als auch abholen kann:
vending=parcel_pickup;parcel_mail_in
Um nun in OSM also Liste abzubilden verwenden wir den Strichpunkt.
Aus key = ["bla", "blub"] wird key=bla;blub
Wie sieht es nun aber mit Dictonaries aus?
Leider ist man sich da wohl nicht so einig.
Mir sind im ersten Moment nur die TMC und die parking Tags eingefallen:
parking:lane:right=perpendicular
parking:condition:right=disc
parking:condition:right:maxstay=1 h
parking:condition:right:time_interval=Mo-Fr 09:00-18:00;Sa 09:00-14:00
parking = {
lane: {
right: "perpendicular"
},
condition: {
right: {
value: "disc",
maxstay: "1 h",
time_interval: ["Mo-Fr 09:00-18:00", "Sa 09:00-14:00"]
}
}
}
TMC:cid_58:tabcd_1:Class = Point
TMC:cid_58:tabcd_1:LCLversion = 9.00
TMC:cid_58:tabcd_1:LocationCode = 24518
TMC:cid_58:tabcd_1:NextLocationCode = 24519
TMC:cid_58:tabcd_1:PrevLocationCode = 24517
Okay, hier ist es schwierig nen endeutiges mapping zu finden, ich nehme mal eines, das für mich am sinnvollsten scheint.
(Diskussion wie sinnvoll die Tags sind bitte im entsprechenden Thread nebenan.)
TMC = [
{
cid: "58",
tabcd: 1,
Class: "Point",
LCLversion: "9.00",
LocationCode: "24518",
NextLocationCode: "24519",
PrevLocationCode: "24517"
}
]
Wenn man sich mal bei Taginfo mal den Key-Längen Report absteigend nach länge sortiert kommt man noch auf viel mehr Verwendungen…. http://taginfo.openstreetmap.org/reports/key_lengths#keys
education:male_student_pupil_dropout_2010_2011=x
education:male_student_pupil_dropout_2009_2010=x
education:male_student_pupil_dropout_2008_2009=x
-----
http://wiki.openstreetmap.org/wiki/Key:traffic:hourly
Dabei geht es wohl um Verkerszählungen, warum auch immer wir das in der DB haben...
http://www.openstreetmap.org/browse/node/391836581
Der Node hat knapp 50 Tags, hier mal nen Auszug:
traffic:hourly:00:Sa:fall = <10/6:00
traffic:hourly:07:We:fall:backward = <4/14:00
traffic:hourly:07:We:fall:forward = 8/14:00
traffic:hourly:08:Fr:fall:backward = 7/16:00
traffic:hourly:08:Fr:fall:forward = 7/16:00
traffic:hourly:08:Fr:fall:wet:backward = 5/11:00
traffic:hourly:08:Fr:fall:wet:forward = <5/11:00
Wenn man die Daten tatsächlich in der DB haben will sollte man das das als
traffic_hourly:fall=Sa 00 <10/6;We 07 8,<4/14;Fr 08 7,7/16; Fr 08 wet 5,<5/11
taggen.
----
http://www.openstreetmap.org/browse/way/45855121
http://www.yucaipavalleygolf.com/Yucaipa-Valley-Golf-Course.html
WTF
----
http://wiki.openstreetmap.org/wiki/Proposed_features/Extended_conditions_for_access_tags#Examples
bicycle = yes
bicycle:(10:00-18:00) = no Bicycles are permitted to use this street outside 10AM-6PM.
maxspeed:hgv = 120
maxspeed:hgv:Sa,Su = 80 Maxspeed for hgv is limited to 80 on weekends, but 120 otherwise.
maxspeed = 50
maxspeed:(Mo-Fr 07:00-17:00) = 30
----
Ich wäre grundsätzlich dafür beim Taggen drauf zu achten, das möglichst wenig verschiedene Keys entstehen.
Das heißt ich würde dynamische Dinge wie Zahlen oder Wochentage gerne aus dem Key rauslassen.
In http://wiki.openstreetmap.org/wiki/Talk:Proposed_features/Extended_conditions_for_access_tags#Move_parameters_from_key_to_value kam das such schon zur Sprache.
Dort kam als Argument das man so lange Zeilen nicht mehr so einfach bearbeiten kann.
Der Editor (oder die API) sollte aus meiner Sicht dafür sorgen das bei jedem ; ne neue Zeile anfängt, also z.B.
vending=parcel_pickup;parcel_mail_in
zu
vending=parcel_pickup
vending=parcel_mail_in
wird.
Ggf. sollte man dann auch noch ein einheitliches Trennzeichen für subkey und subvalue einführen, z.B. den Doppelpunkt.
level_names=U:basement;G:ground floor;3:roof
level_names:de=U:Untergeschoss;G:Erdgeschoss;3:Dach
anstatt
level_names:U=basement
level_names:G=ground floor
level_names:3=roof
Oder sollte man doch einfach JSON in den Value stecken?
level_names={"U": "basement", "G": "ground floor", "3": "roof"}
Wie sieht ihr das?
Macht es Überhaupt sinn da ne einigermaßen einheitliche Regel zu erarbeiten?
Danke im voraus,
Andi
Mehr Informationen über die Mailingliste Talk-de