Exemple #1
0
def MergeArea(x, y, zoom, mapIds, tileGroups):
	lat, lon = tiles.num2deg(x, y, zoom)
	x2, y2 = tiles.deg2num(lat, lon, dataTileZoom)

	lat2, lon2 = tiles.num2deg(x+1, y+1, zoom)
	x3, y3 = tiles.deg2num(lat2, lon2, dataTileZoom)

	fiList = []
	for cx in range(x2, x3):
		for cy in range(y2, y3):
			fina = "../12/{0}/{1}.osm.bz2".format(cx, cy)
			if not os.path.isfile(fina):
				continue
			fiList.append(fina)

	if len(fiList) == 0:
		return
	#out = bz2.BZ2File("merge.osm.bz2","w")
	#print "Found {0} data tiles".format(len(fiList))

	tileGroups.append(fiList)
	mapId = 63240000+len(mapIds)
	mapIds.append(mapId)

	if 0:
		countNodes, countWays, countRelations = mergeTiles.MergeFiles(fiList, out, 0)

		if countNodes + countWays + countRelations == 0:
			#Everything is empty
			return

		cmd = "java -jar ../splitter-r412/splitter.jar --mapid={0} merge.osm.bz2".format(mapId)
		
		os.system(cmd)
Exemple #2
0
def CalcFileSize(x, y, zoom, dataTileZoom):
	lat, lon = tiles.num2deg(x, y, zoom)
	x2, y2 = tiles.deg2num(lat, lon, dataTileZoom)

	lat2, lon2 = tiles.num2deg(x+1, y+1, zoom)
	x3, y3 = tiles.deg2num(lat2, lon2, dataTileZoom)

	#print (x2, x3), (y2, y3)
	totalSize = 0
	for cx in range(x2, x3):
		for cy in range(y2, y3):
			fina = "../12/{0}/{1}.osm.bz2".format(cx, cy)
			if not os.path.isfile(fina):
				continue
			s = os.path.getsize(fina)
			totalSize += s
	return totalSize
Exemple #3
0
def GetTile(x, y, zoom, outFina):
	
	topLeft = tiles.num2deg(x, y, zoom)
	bottomRight = tiles.num2deg(x+1, y+1, zoom)

	#url = "http://fosm.org/api/0.6/map?bbox={0},{1},{2},{3}".format(topLeft[1],bottomRight[0],bottomRight[1],topLeft[0])
	url = "http://sodium:8010/api/0.6/map?bbox={0},{1},{2},{3}".format(topLeft[1],bottomRight[0],bottomRight[1],topLeft[0])
	print (url)
	timeout = 1
	waiting = 1
	
	while waiting:
		try:
			body, header = urlutil.Get(url)
			responseCode = urlutil.HeaderResponseCode(header)
			print (responseCode)
			if responseCode == "HTTP/1.1 200 OK":
				waiting = 0
			else:
				time.sleep(timeout)
				timeout *= 2

		except pycurl.error:
			time.sleep(timeout)
			timeout *= 2

	extSp = os.path.splitext(outFina)
	extSp2 = os.path.splitext(extSp[0])

	if extSp[1] == ".bz2" and extSp2[1] == ".osm":
		outFi = bz2.BZ2File(outFina,"w")
		outFi.write(body)

	if extSp[1] == ".gz" and extSp2[1] == ".o5m":
		osmData = OsmData.OsmData()
		osmData.LoadFromOsmXml(BytesIO(body))
		osmData.SaveToO5m(gzip.open(outFina, "wb"))

	return 1
Exemple #4
0
def ProcessAreaNextZoom(x, y, zoom, dataTileZoom, mapIds, tileGroups):

	lat, lon = tiles.num2deg(x, y, zoom)
	x2, y2 = tiles.deg2num(lat, lon, zoom+1)

	lat2, lon2 = tiles.num2deg(x+1, y+1, zoom)
	x3, y3 = tiles.deg2num(lat2, lon2, zoom+1)

	for cx in range(x2, x3):
		for cy in range(y2, y3):
			totalFileSize = CalcFileSize(cx, cy, zoom+1, dataTileZoom)
			if totalFileSize <= maxAllowedFileSize or zoom >= dataTileZoom:

				if zoom >= dataTileZoom:
					ProcessSingleDataTile(cx, cy, zoom+1, mapIds, tileGroups)
				else:
					#Merge at this zoom
					#print "Merge tiles", cx, cy, zoom+1, totalFileSize
					MergeArea(cx, cy, zoom+1, mapIds, tileGroups)
			else:
				#Recusively consder higher zoom level
				ProcessAreaNextZoom(cx, cy, zoom+1, dataTileZoom, mapIds, tileGroups)
Exemple #5
0
def MergeArea(x, y, zoom, mapIds, tileGroups):
    lat, lon = tiles.num2deg(x, y, zoom)
    x2, y2 = tiles.deg2num(lat, lon, dataTileZoom)

    lat2, lon2 = tiles.num2deg(x + 1, y + 1, zoom)
    x3, y3 = tiles.deg2num(lat2, lon2, dataTileZoom)

    fiList = []
    for cx in range(x2, x3):
        for cy in range(y2, y3):
            fina = "../12/{0}/{1}.osm.bz2".format(cx, cy)
            if not os.path.isfile(fina):
                continue
            fiList.append(fina)

    if len(fiList) == 0:
        return
    #out = bz2.BZ2File("merge.osm.bz2","w")
    #print "Found {0} data tiles".format(len(fiList))

    tileGroups.append(fiList)
    mapId = 63240000 + len(mapIds)
    mapIds.append(mapId)

    if 0:
        countNodes, countWays, countRelations = mergeTiles.MergeFiles(
            fiList, out, 0)

        if countNodes + countWays + countRelations == 0:
            #Everything is empty
            return

        cmd = "java -jar ../splitter-r412/splitter.jar --mapid={0} merge.osm.bz2".format(
            mapId)

        os.system(cmd)