def ConvertPoint(pt): try: (x,y,h) = OSTN02.OSGB36_to_ETRS89 (*pt) (gla, glo) = OSGB.grid_to_ll(x, y) return gla, glo except: print "OSTN02 not valid at", pt raise OSTN02Err("OSTN02 not valid at position")
def TryTransform(x, y, lats, lons): try: (xa,ya,ha) = OSTN02.OSGB36_to_ETRS89 (x, y) (gla1, glo1) = OSGB.grid_to_ll(xa, ya) lats.append(gla1) lons.append(glo1) except: pass
def ReadGeometry(self, geo): for ch in geo: if ch.tag == "{http://www.opengis.net/gml/3.2}LineString": posListEl = ch.find('{http://www.opengis.net/gml/3.2}posList') posFloats = map(float, posListEl.text.split(" ")) est = posFloats[0::2] nth = posFloats[1::2] pts = [] for e, n in zip(est, nth): try: (x,y,h) = OSTN02.OSGB36_to_ETRS89 (e, n) (gla, glo) = OSGB.grid_to_ll(x, y) #print e, n, gla, glo, h p = cart.LatLonToCart(math.radians(gla), math.radians(glo), 0.) pts.append(p) except: pass if len(pts) < 2: return None shp = LineString(pts) return shp if ch.tag == "{http://www.opengis.net/gml/3.2}Point": posEl = ch.find("{http://www.opengis.net/gml/3.2}pos") posFloat = map(float, posEl.text.split(" ")) try: (x,y,h) = OSTN02.OSGB36_to_ETRS89 (posFloat[0], posFloat[1]) (gla, glo) = OSGB.grid_to_ll(x, y) shp = Point(cart.LatLonToCart(math.radians(gla), math.radians(glo), 0.)) return shp except: pass #print shp return None #print ch.tag return None
def ConvertPolygon(rings): rings2 = [] for ring in rings: ring2 = [] for pt in ring: try: (x,y,h) = OSTN02.OSGB36_to_ETRS89 (*pt) (gla, glo) = OSGB.grid_to_ll(x, y) except: print "OSTN02 not valid at", pt raise OSTN02Err("OSTN02 not valid at position") #print pt, gla, glo ring2.append((gla, glo)) rings2.append(ring2) return rings2
import csv from ostn02python import OSGB, OSTN02 if __name__=="__main__": outPollution = open("outPollution.js", "wt") receptorPosDict = {} for row in csv.DictReader(open("measuredno2.csv")): receptorNum = row["Site ID"] (x,y,h) = OSTN02.OSGB36_to_ETRS89 (float(row["X"]), float(row["Y"])) (gla, glo) = OSGB.grid_to_ll(x, y) if len(row["2017"]) > 0: m2017 = float(row["2017"]) popupHtml = "<b>Receptor {}</b>".format(receptorNum) for year in range(2012, 2018): if len(row[str(year)]) == 0: continue popupHtml += "<br/>NO2 {}: {}".format(year, float(row[str(year)])) outPollution.write(("\tL.marker([{}, {}], {{icon: caution{}sIcon}}).addTo(mymap).bindPopup(\"" +"{}\");\n").format( gla, glo, int(m2017/10)*10, popupHtml)) else: popupHtml = "<b>Receptor {}</b>".format(receptorNum)
except: pass if __name__=="__main__": #lats = [50.7595692, 50.7724678] #lons = [-3.7165585, -3.6989885] gridCode = "SX" if len(sys.argv) >= 2: gridCode = sys.argv[1] username = "******" #raw_input("Username:"******"Password:"******"ST", 00000, 00000) xin2 = xin + 100000 yin2 = yin + 100000 print "Start corner", gridCode, xin, yin #print xin, yin #print xin2, yin2 for x in range(xin, xin2, 1000): for y in range(yin, yin2, 1000): lats, lons = [], [] TryTransform(x, y, lats, lons)
out.write("<?xml version='1.0' encoding='UTF-8'?>\n") out.write("<osm version='0.6' upload='true' generator='py'>\n") #lats, lons = [51.383075,50.50], [-1.955713,-0.729294] #Hampshire #lats, lons = [50.703, 51.167], [-0.955, 0.040] #West sussex #lats, lons = [50.7217072, 51.1475977], [-0.1424041, 0.8675128] #East sussex lats, lons = [51.8251473, 52.3967369], [-3.1446227, -2.3441835] #Herefordshire collectEastings = [] collectNorthings = [] #Convert to OS grid for lat in lats: for lon in lons: (x2,y2) = OSGB.ll_to_grid(lat, lon) try: e, n, h = OSTN02.ETRS89_to_OSGB36(x2,y2,0.) except: print "Error: OSTN02 not defined here, using approximation" e, n, h = x2, y2, 0. print e, n, OSGB.grid_to_os_streetview_tile((e, n)) collectEastings.append(e) collectNorthings.append(n) #Convert to rectangular area minE = min(collectEastings) minN = min(collectNorthings) minE = int(round(minE - (minE % 10000))) minN = int(round(minN - (minN % 10000)))
fi.write("<osm version='0.6' upload='true' generator='JOSM'>\n") for li in data2: if len(li["oseast1m"]) == 0: continue e = float(li["oseast1m"]) n = float(li["osnrth1m"]) qual = int(li["osgrdind"]) pcs = li["pcds"] doterm = li["doterm"] if len(doterm) > 0 and skipDeleted: continue try: (x, y, h) = OSTN02.OSGB36_to_ETRS89(e, n) (gla, glo) = OSGB.grid_to_ll(x, y) if count % 100 == 0: print pcs, doterm, qual, gla, glo, count count += 1 fi.write("<node id='{0}' lat='{1}' lon='{2}'>\n".format(nodeId, gla, glo)) fi.write("<tag k='name' v='{0}' />\n".format(pcs)) fi.write("<tag k='onspd_postcode_centre' v='yes' />\n") fi.write("</node>\n") nodeId -= 1 except: print pcs, "conversion failed" fi.write("</osm>\n")