[Talk-cz] LPIS import
Pavel Machek
pavel na ucw.cz
Neděle Červenec 20 23:00:19 UTC 2014
Ahoj!
> > A ted ten skript.
Tak dobra zprava, ten web to umi dat we wgs-84.
Spatna je, ze to posila mailem, dle cisla katastralniho uzemi. Aha, a
ty cisla katastralnich uzemi jde dokonce vykoukat z osm, jako ref u
boundary=administrative, admin_level=10. Bohuzel jsou to maly uzemi.
> :-), normálka ;). Landuse je opravdu hodně potřeba. Vždycky tak trochu
> "závidím" karviňákům tu jejich barevnou mapu. Přemýšlel jsem o možnosti využít
> parcely z RUIAN. Tam je nejen zemědělská půda, ale i leccos ostatního -
> zastavěná plocha, silnice, dálnice a co já vím, co ještě. Zemědělská půda tam
> určitě není tak podrobně jako v eagri/lpis.
> Máš představu, nakolik jsou údaje trvanlivé, t.j. zda příští rok ještě budou
> platit? Jak aktualizovat? Jak to spojit s jiným landuse, neb nejen zemědělskou
> půdou povrch naší matičky pokryt jest.
Maji tam klic podle kteryho to pujde aktualizovat, a normalne
zemedelska puda relativne trvanliva je. Spojit s jinym landusem --
spis radej ne, ne? Maji to docela podrobny, tj pole zacina na kraji cesty.
> Dle právě provedeného výpočtu má v RUIAN digitální mapu 64 procent území
> republiky, takže sice dobré, ale ne dost.
>
> Určitě najdeme spoustu míst, kde podle RUIAN je sídliště a podle EAGRI louka
> či pole (po zkušenostech s importem adres ;-)).
No, tohle bude krasne videt na bingu :-).
> Nakolik budeme která data brát jako referenční či jak se rozhodneme, co
> převezmeme. Možná existují i další zdroje pro landuse.?
>
> Co budeme dělat se stávajícími polygony landuse. Dělat díry v polygonech z
> EAGRI?
No, asi zalezi co bude lepsi. V oblastech, co jsem mapoval ja, je LPIS
lepsi nez rucni trasovani z ortofota... Takze pekne vymazat a nahrat
znova.
A ted.. umel by nekdo automaticky z mbox souboru s mailama vytahnout
zip-ovy prilohy?
Pavel
(Aktualni verse importeru v priloze).
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
------------- další část ---------------
#!/usr/bin/python
# http://www.lpis.cz/index.html
# Mapa:
# http://eagri.cz/public/app/lpisext/lpis/verejny/
# Vyzadat data na:
# http://eagri.cz/public/app/lpisext/lpis/verejny/exportDat.html
# Vyzadat: Pudni bloky
# Souradny systrem: wgs-84
# Aha, a ty cisla katastralnich uzemi jde dokonce vykoukat z osm, jako ref u boundary=administrative, admin_level=10
# A... nefunguje jim dobre captcha, takze jde stahnout vic uzemi jednim formularem.
# doubek: 631035
# babice: 600601
# for A in *.zip; do unzip $A; done
import sys
import shapefile
from pyproj import *
print "<?xml version='1.0' encoding='UTF-8'?>"
print "<osm version='0.6' generator='pyshp'>"
#p1 = Proj(init='esri:102067')
p1 = Proj(init='EPSG:4326')
p2 = Proj(init='EPSG:4326')
sf = shapefile.Reader(sys.argv[1])
global field
field = {}
def a_field(num, name):
global field
i1, i2, i3, i4 = sf.fields[num]
if name != i1:
print 'Unexpected field name <', name
field[name] = num
a_field(1, 'ID_FB')
a_field(3, 'NKODFB')
a_field(6, 'PLATNYOD')
a_field(7, 'VYMERAM')
a_field(8, 'KULTURA')
a_field(9, 'KULTURA_KL')
a_field(10, 'KULTURAOD')
a_field(11, 'EKO')
a_field(21, 'VYSKA')
a_field(22, 'SVAZITOST')
a_field(26, 'KU_KOD')
global nodeid
nodeid = 0
def convert(point):
lon, lat = point
lon, lat = transform(p1, p2, lon, lat)
#lat += 50.013082018919185-50.013834
#lon += 14.748617781670555-14.749757
return lon, lat
def write_point(point):
global nodeid
lon, lat = convert(point)
tags = '<tag k="created_by" v="shpupload"/>'
tags += '<tag k="source" v="lpis"/>'
nodeid -= 1
print '<node id="%d" lon="%f" lat="%f\">%s</node>' % ( nodeid, lon, lat, tags )
return nodeid
def attr(shrec, name):
return shrec.record[field[name]]
for shrec in sf.shapeRecords():
shape = shrec.shape
pts = []
for point in shape.points:
pts += [ write_point(point) ]
nodeid -= 1
print '<way id="%d">' % nodeid
print ' <tag k="created_by" v="pyshp"/>'
print ' <tag k="id_fb" v="%s"/>' % attr(shrec, 'ID_FB')
print ' <tag k="source" v="lpis"/>'
print ' <tag k="lpis:kultura" v="%d"/>' % attr(shrec, 'KULTURA')
kul = attr(shrec, 'KULTURA')
if kul == 2: print ' <tag k="landuse" v="farmland"/>'
elif kul == 3: print ' <tag k="landuse" v="hop_field"/>'
elif kul == 30: print ' <tag k="landuse" v="hop_field"/>'
elif kul == 31: print ' <tag k="landuse" v="hop_field"/><tag k="crop" v="hop"/>'
elif kul == 41: print ' <tag k="landuse" v="vineyard"/><tag k="barrier" v="fence"/>'
elif kul == 61: print ' <tag k="landuse" v="orchard"/><tag k="barrier" v="fence"/>'
elif kul == 62: print ' <tag k="landuse" v="orchard"/>'
elif kul == 7: print ' <tag k="landuse" v="meadow"/><tag k="meadow" v="agricultural"/>'
elif kul == 71: print ' <tag k="landuse" v="meadow"/><tag k="meadow" v="agricultural"/><tag k="barrier" v="fence"/>'
elif kul == 72: print ' <tag k="landuse" v="meadow"/><tag k="meadow" v="agricultural"/>'
elif kul == 91: print ' <tag k="landuse" v="forest"/><tag k="barrier" v="fence"/>'
elif kul == 92: print ' <tag k="landuse" v="farm"/><tag k="crop" v="vegetables"/>'
elif kul == 97: print ' <tag k="landuse" v="reservoir"/>'
elif kul == 98: print ' <tag k="landuse" v="forest"/><tag k="note" v="rychle rostouci dreviny"/>'
elif kul == 99: print ' <tag k="landuse" v="forest"/>'
else: print ' <tag k="landuse" v="unknown_farmland_%d"/>' % kul
print ' <tag k="ele" v="%d"/>' % attr(shrec, 'VYSKA')
print ' <tag k="ref" v="%s"/>' % attr(shrec, 'NKODFB')
for pt in pts:
print ' <nd ref="%d"/>' % pt
print '</way>'
print '</osm>'
Další informace o konferenci talk-cz