コード例 #1
0
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")
コード例 #2
0
ファイル: area.py プロジェクト: TimSC/fix-import-sv
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
コード例 #3
0
ファイル: gml.py プロジェクト: TimSC/contour-gml-to-osm
	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
コード例 #4
0
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
コード例 #5
0
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)
		
コード例 #6
0
ファイル: area.py プロジェクト: TimSC/fix-import-sv
	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)
コード例 #7
0
ファイル: merge.py プロジェクト: TimSC/contour-gml-to-osm
	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)))
コード例 #8
0
ファイル: postcode.py プロジェクト: TimSC/map-utils
    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")