[Talk-ro] Importul automat al localităților
Eddy Petrișor
eddy.petrisor at gmail.com
Tue Jul 14 15:35:33 BST 2009
(Am început un thread nou ca să facem distincție mai ușor între ce e
legat de importul cu metoda complet automată.)
Salut,
Sunt foarte aproape să termin codul necesar pentru importul
automat[1], dar am câteva lucruri de clarificat sau precizat.
1) e OK dacă reprocesez și corectez unde e cazul valoarea lui "place"
? ex.: o localitate care e sat ("village"), dar e marcată drept
"town"
2) e OK dacă pentru sectoarele Bucureștiului pun place=sector? (nu
m-am uitat în date să văd dacă există într-adevăr)
3) am considerat hamlet/cătun orice sat cu populație sub 51 de
locuitori (exclusiv), niciodată reședința de comună nu e "hamlet".
4) există cumva în date și informații despre județe în sine? Nu am
tratat în mod deosebit valuarea 40 pentru rang (București sau județ)
și dacă există atunci vor apărea pe hartă noduri "place=city" pentru
județe; (am văzut că pentru Olt nu există, dar ar fi utilă o
confirmare)
5) încă nu am implementat verificarea datelor existente dintr-o bază
de date postgres, ci doar direct din API pentru că am considerat că ar
lua prea mult să mă ocup de pregătirile pentru baza de date și noua
parte a codului
6) are sens să țin în date "siruta:rank"? (Valorile sunt numerale
romane: I, II, III, IV, V)
7) Vi se pare OK rezultatul ? Aveți ceva comentarii? Trebuie modificat ceva?
Cam așa arată rezultatul pentru o localitate care deja există:
In [20]: print "Processing data for %s ..." % ( csvplace[u"name"] )
Processing data for Slătioara ...
In [21]: map = getMapAroundPoint ( lat = csvplace[u"lat"], lon =
csvplace[u"lon"] )
In [22]: existing_nodes = locatePlaceInXML ( map, csvplace[u"name"] )
In [23]: existing_nodes
Out[23]:
[{u'changeset': 398515,
u'id': 344936455,
u'lat': 44.400496699999998,
u'lon': 24.322864500000001,
u'tag': {u'addr:postcode': u'237410',
u'created_by': u'Potlatch 0.10f',
u'is_in': u'Olt; Romania',
u'name': u'Sl\u0103tioara',
u'place': u'hamlet'},
u'timestamp': u'2009-02-13T17:50:01Z',
u'uid': 66944,
u'user': u'eddyp',
u'version': 1,
u'visible': True}]
In [24]: nodedict = nodeDictForPlace ( csvplace, existing_nodes[0] )
In [25]: nodedict
Out[25]:
{u'changeset': 398515,
u'id': 344936455,
u'lat': 44.400496699999998,
u'lon': 24.322864500000001,
u'tag': {u'addr:postcode': u'237410',
u'created_by': u'Potlatch 0.10f',
u'is_in': u'Olt;Romania',
u'name': u'Sl\u0103tioara',
u'old_postal_code': u'510',
u'place': u'hamlet',
u'population': u'2205',
u'siruta:code': u'125383',
u'siruta:code_sup': u'125374',
u'siruta:county': u'Olt',
u'siruta:county_code': u'OT',
u'siruta:county_id': u'28',
u'siruta:rank': u'IV',
u'siruta:type': u'22'},
u'timestamp': u'2009-02-13T17:50:01Z',
u'uid': 66944,
u'user': u'eddyp',
u'version': 1,
u'visible': True}
Și cam așa ar arăta pentru un nod nou:
In [29]: print "Processing data for %s ..." % ( csvplace[u"name"] )
Processing data for Salcia ...
In [30]: map = getMapAroundPoint ( lat = csvplace[u"lat"], lon =
csvplace[u"lon"] )
In [31]: existing_nodes = locatePlaceInXML ( map, csvplace[u"name"] )
In [32]: existing_nodes
Out[32]: []
In [33]: nodedict = nodeDictForPlace ( csvplace )
In [34]: nodedict
Out[34]:
{u'lat': 44.427001017547312,
u'lon': 24.314194537337912,
u'tag': {u'is_in': u'Sl\u0103tioara;Olt;Rom\xe2nia',
u'name': u'Salcia',
u'old_postal_code': u'510',
u'place': u'village',
u'population': u'405',
u'siruta:code': u'125392',
u'siruta:code_sup': u'125374',
u'siruta:county': u'Olt',
u'siruta:county_code': u'OT',
u'siruta:county_id': u'28',
u'siruta:rank': u'V',
u'siruta:type': u'23'}}
[1] știu că a durat mai mult decât am prevăzut, dar sunt destul de
mulțumit de ce a ieșit și probabil ca nu vor fi mari probleme
--
Regards,
EddyP
=============================================
"Imagination is more important than knowledge" A.Einstein
More information about the Talk-ro
mailing list