Ahoj, cvičně jsem si taky zkusil tři KÚ, první dojmy:
* Skript by měl slučovat duplicitní uzly (triviální). * Skript by měl eliminovat uzel v cestě, pokud je totožný jako předcházející uzel (triviální). * Musí se ručně řešit multipolygony. * Spousta sousedících polygonů má překryvy, i v rámci jednoho KU. * LPIS obsahuje jen zemědělskou půdu, takže v mapě vznikají "ostrůvky" polygonů místo souvislé plochy. * Podezřele hodně luk je označeno jako oplocených (kul. 71) -- skript předpokládá, že každá pastvina má ohradník/plot? * Jak už zaznělo, budou potíže na rozhraních s existujícími lesy. * LPIS na řadě míst nekopíruje hranice parcel, takže budou nesoulady s daty RUIANu, plochami kreslenými podle KM atd. * Od pohledu mi přijde, že parcely RUIANu by byly kvalitnější zdroj pro plošné mapování. Na druhou stranu, už teď skript ušetří mraky ručního obkreslování, stačí jen v JOSM doopravit problémy. :-) (V příloze je skript s přidaným primitivním odstraňováním duplicitních uzlů. Nicméně, Python vůbec neznám a z jeho syntaxe dostávám osypky, takže zbytek nechám pythonistům :-)) Martin On 22.7.2014 15:28, Pavel Machek wrote:
Hi! I'd like to start import of LPIS farmland database, as we have very good coverage of houses, forests and water, but farmland is very good at places and completely missing at different places. Import page is at https://wiki.openstreetmap.org/wiki/LPIS , import script is attached to this email. Best regards, Pavel _______________________________________________ Talk-cz mailing list [email protected] https://lists.openstreetmap.org/listinfo/talk-cz
#!/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 global nodemap nodemap = {} 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 global nodemap lon, lat = convert(point) nodekey = '%f/%f' % (lon, lat) if nodekey in nodemap: return nodemap[nodekey] 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 ) nodemap[nodekey] = nodeid; return nodeid def attr(shrec, name): return shrec.record[field[name]] for shrec in sf.shapeRecords(): shape = shrec.shape prevpt = 6666 pts = [] for point in shape.points: curpt = write_point(point) if prevpt != curpt: pts += [ curpt ] prevpt = curpt 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="farmland"/><tag k="crop" v="hop"/>' elif kul == 30: print ' <tag k="landuse" v="farmland"/><tag k="crop" v="hop"/>' elif kul == 31: print ' <tag k="landuse" v="farmland"/><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="scrub"/><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>'
_______________________________________________ Talk-cz mailing list [email protected] https://lists.openstreetmap.org/listinfo/talk-cz

