OpenCellID

Kolesár András kolesar.andras at gmail.com
2015. Nov. 5., Cs, 12:28:21 UTC


Szia!

Amikor az elválasztójelről döntöttem, nem gondoltam végig a halmaz és a 
lista megkülönböztetését. Nem egyértelmű, hogy az OSM-ben a pontosvesszővel 
elválasztott értékek halmazt vagy listát jelentenek-e. Találtam egy írást, 
amelyben éppen azt ismeri fel a szerző, hogy nem tekintheti halmaznak, 
hiszen vannak esetek, amikor ismétlődhetnek az értékek és fontos a 
sorrendjük is:

Semicolons in OSM Tags
http://blog.jochentopf.com/2013-09-23-semicolons-in-osm-tags.html

A Balatonon is van ilyen hajózási jel:
seamark:beacon_isolated_danger:colour=black;red;black

A fentiek alapján szerintem használhatjuk a pontosvesszőt sorbarendezett 
lista elemeinek elválasztására. A cellák elválasztására szolgáló 
pontosvessző nem is volt számunkra kérdés. Sokat töprengtem viszont egyes 
szolgáltatók elválasztásán, felmerült többféle elválasztójel, talán még a 
"|" karakter is.

Végül a "; " jelet választottuk, mert így értelmezhető egyaránt 
pontosvesszős listaként és a szóköz figyelembevételével kétszintű 
elválasztásként is. Volt már gondunk a "; " jelből, ugyanis ha egy ilyet iD 
editorban szerkesztenek, kimazsolázza az összes szóközt a pontosvesszők 
mögül. Szerencsére egyedi volt az eset, de mindenképpen figyelemfelhívó. Ha 
át kell állnunk másra, a "|" elválasztást fogom javasolni.

A "; " jel az egy helyen szereplő szolgáltatókat választja el, tehát ha 
kicseréljük "|"-re, akkor így fognak kinézni az általad felvetett példák:

# három szolgáltató egyenként 3-4 cellával
lte:cellid=1;2;3|1;2;3|0;1;2;11

# egy szolgáltató sok cellával
umts:PSC=263;264;263;264;263;264
umts:cellid=9021;9022;9026;9027;36996;36997

Fontos tehát, hogy két lista van egymásba ágyazva, egyik sem halmaz. A 
sorrend azért fontos, mert több kulcsban azonos pozícióban levő elemek 
összetartoznak (pl: umts:PSC és umts:cellid), az adatok pedig 
ismétlődhetnek. Remek példa erre az lte:cellid címkében kétszer megjelenő 
1;2;3.

Üdv:
András

2015. november 5., csütörtök 10:14:26 UTC+1 időpontban kdano a következőt 
írta:
>
> Köszi!
> Elsősorban az érdekelt, hogy ez szándékos-e, vagy valami automatizálási 
> hibából származik. De akkor meg fogom mondani az osmose-nak, hogy false 
> positive :)
>
> Viszont így, hogy a szerkezetet is értem egy kicsit, van egy 
> kérdésem/felvetésem:
> Az felmerült, hogy más delimitert használjatok? Mert az én értelmezésem 
> szerint a pontosvesszőt 
> <http://wiki.openstreetmap.org/wiki/Semi-colon_value_separator> inkább 
> olyan esetben szokás használni, amikor az x címkének az y és z is értéke, 
> és az "x=y" és "x=z" tageket vonjuk össze "x=y;z"-vé (vagy "x=z;y"-ná). 
> Szóval ahol az érték egy halmaz, nem pedig egy lista.
> A sávok tagelésénél <http://wiki.openstreetmap.org/wiki/Key:turn:lanes> 
> pl. a "|" karakterrel elválasztott listákat használunk.
> Ennek mintájára lehetne pl. 
> lte:cellid=1;2;3|1;2;3|0;1;2;11 vagy 
> umts:PSC=263|264|263|264|263|264 és 
> umts:cellid=9021|9022|9026|9027|36996|36997
>
> Persze nekem mindegy, csak miattam ne változtassatok: én nem tervezem sem 
> a felvitelét, sem a felhasználást ezeknek az adatoknak. :)
> Csak a konzisztencia miatt vetettem fel
>
> üdv:
> kdano
>
>
> On Thursday, November 5, 2015 at 7:49:31 AM UTC+1, Kolesár András wrote:
>>
>> Szia!
>>
>> Két oka is van az ismétlődő adatoknak. Közös bennük, hogy egy-a-többhöz 
>> relációt próbálunk kilapítva ábrázolni helytakarékosan és mégis olvashatóan.
>>
>> Az umts:PSC esetében egy az egyes cella-azonosítókhoz tartozó PSC 
>> értékeket soroljuk fel, ezek tudnak azonosak lenni egy adott helyszínen, 
>> sőt jellemzően háromszor ismétlődnek, ettől lesz a hálózat HSPA+.
>>
>> Az lte:cellid azért tud azonos lenni, mert a "; " elválasztójel két 
>> oldalán különböző szolgáltatók celláit látod. A sima ";" egy szolgáltató 
>> celláit határolja, a pontosvessző-szóköz az egy helyen működő 
>> szolgáltatókat választja el egymástól. Ez utóbbi jelölésmódot azért 
>> találtuk ki, hogy ne kelljen szolgáltatónként címkézni mindent. Így is 
>> rengeteg címkét teszünk a tornyokra, ez háromszorozódna, ha 
>> lte:cellid:21601=* formában szétbontanánk szolgáltatókra.
>>
>> Ha az objektumoknál lehetne relációkat vagy JSON-szerű hierarchiát 
>> ábrázolni, akkor nyilván abban írnánk le.
>>
>> Íme egy bázisállomás egy szolgáltatóval, két irányban, irányonként három 
>> cellával:
>> http://cellavadasz.openstreetmap.hu/#map=14/47.4990/19.0564&id=3765523113
>>
>> MCC=216
>> MNC=01
>> gsm:LAC=3112
>> gsm:cellid=9021;9022
>> lte:LAC=5121
>> lte:cellid=1;2
>> lte:eNB=902
>> umts:LAC=4121
>> umts:PSC=263;264;263;264;263;264
>> umts:RNC=412
>> umts:cellid=9021;9022;9026;9027;36996;36997
>>
>> Ezt JSON szerkezetben az alábbit jelenti (csupa kisbetűs kulcsokkal és 
>> numerikus értékekkel):
>>
>> {
>>     mcc: 216
>>     mnc: 1,
>>     gsm: {
>>         lac: 3112,
>>         cells: [
>>             { id: 9021 },
>>             { id: 9022 }
>>         ]
>>     },
>>     umts: {
>>         lac: 4121,
>>         rnc: 412,
>>         cells: [
>>             { id: 9021, psc: 263 },
>>             { id: 9022, psc: 264 },
>>             { id: 9026, psc: 263 },
>>             { id: 9027, psc: 264 },
>>             { id: 36996, psc: 263 },
>>             { id: 36997, psc: 264 }
>>         ]
>>     },
>>     lte: {
>>         lac: 5121,
>>         enb: 902,
>>         cells: [
>>             { id: 1 },
>>             { id: 2 }
>>         ]
>>     }
>> }
>>
>> Jogos kérdés lehet, hogy miért nem írtam az gsm és lte cellákat az alábbi 
>> egyszerűbb formában, numerikus tömbként:
>>
>> gsm: {
>>     cells: [9021, 9022]
>> }
>>
>> lte: {
>>     cells: [1, 2]
>> }
>>
>> Azért nem írtam így, mert a celláknak nem csak egyetlen tulajdonságuk van 
>> (azonosító), hanem például a psc is (umts hálózatokban). Így ahány umts 
>> cella van, annyi psc is.
>>
>> Megjegyzések: Igazából az rnc is a cella tulajdonsága, de ez egy adott 
>> helyszínen mindig állandó, ezért nem írjuk ki cellánként, hanem a 
>> bázisállomás tulajdonságaként tekintjük. Mérünk még számos más értéket is a 
>> cellákra, amelyeket egyelőre csak elvétve tüntettünk fel az OpenStreetMap 
>> adatbázisában: bcch, bsic, ulch, dlch, valamint a példádban is említett 
>> direction.
>>
>> Írhattam volna az alábbi formában, a cellák számával megegyező elemszámú 
>> tömbként a psc-t is JSON formátumban, de ez nem adja vissza jól a 
>> struktúrát:
>>
>> umts: {
>>     cells: [9021, 9022, 9026, 9027, 36996, 36997]
>>     psc: [263, 264, 263, 264, 263, 264]
>> }
>>
>> Az OpenStreetMap kulcs=érték párosokban gondolkodó címkézési rendszerében 
>> mégis az utóbbi formát választottuk, mert még mindig jobban olvasható, 
>> mintha a struktúrát gyönyörűen visszaadó JSON valamilyen escape-elt vagy 
>> base64-kódolt változatát tennénk oda.
>>
>> Nemcsak emberi, hanem gépi értelmezésre is alkalmas a választott 
>> formátum. A szerkesztésre használt API overpass lekérdezéssel olvassa az 
>> OSM adatokat és szétszedi a fenti normalizált alakra, hogy aztán 
>> automatikusan kiegészíthesse az újabb mérésekből érkezett rokon cellákkal, 
>> majd visszaalakítja kulcs-érték párokká.
>>
>> Elsőre bizonyára nehezen értelmezhető, különösen a több szolgáltatós 
>> tornyok és a részben felmért adatokat tükröző fixme-k miatt. Remélem, hogy 
>> a példa alapján tisztább lett a kép.
>>
>> Üdv:
>> András
>>
>> 2015. november 4., szerda 22:14:22 UTC+1 időpontban kdano a következőt 
>> írta:
>>>
>>> Gyorskérdés az adatbázissal kapcsolatban (nem mélyedtem el nagyon abban, 
>>> hogy pontosan mit is jelent az a rengeteg tag, amit ilyen tornyokra 
>>> címkéztek):
>>> Az normális, hogy ugyanaz az érték pontosvesszővel elválasztva többször 
>>> is szerepel?
>>> pl.
>>> "lte:cellid=1;2;3; 1;2;3; 0;1;2;11"
>>> "umts:PSC=48;44;222;46;47;48;44;45;46"
>>> "gsm:direction=70;180;180; fixme"
>>> "gsm:LAC=110; 110"
>>>
>>> mert én csak annyit értek ebből, hogy az osmose hülyét kap tőle :)
>>>
>>> kdano
>>>
>>
--------- következő rész ---------
Egy csatolt HTML állomány át lett konvertálva...
URL: <http://lists.openstreetmap.org/pipermail/talk-hu/attachments/20151105/fa7345f4/attachment.htm>


További információk a(z) Talk-hu levelezőlistáról