Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
cresi/
Proposal/
roadtracer/
cache/
*.png
*.osm
lightning_logs/
*.npy
2 changes: 0 additions & 2 deletions README.md

This file was deleted.

86 changes: 86 additions & 0 deletions get_images.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import os
import math
import requests
from PIL import Image
from pathlib import Path


# Constants
ZOOM = 19
TILE_SIZE = 4096
SUB_TILE_SIZE = 512
ORIGIN_SHIFT = 2 * math.pi * 6378137 / 2.0

# Define the region map
region_map = {
"amsterdam": [52.376805, 4.882880, 52.363139, 4.904190],
"london": [51.510040, -0.027977, 51.494132, -0.008300],
"utrecht": [52.0, 4.9, 52.2, 5.1],
"copenhagen": [55.6, 12.4, 55.8, 12.7],
"strasbourg": [48.5, 7.6, 48.7, 7.8],
"paris": [48.8, 2.2, 49.0, 2.5],
}


def get_regions():
regions = []
for name, array in region_map.items():
center_gps = ((array[1] + array[3]) / 2, (array[0] + array[2]) / 2)
radius_x = math.ceil(abs(array[3] - array[1]) * 810 * 2 / 576)
radius_y = math.ceil(abs(array[2] - array[0]) * 500 * 2 / 576)
# print(radius_x, radius_y)
# if name in ["denver", "kansas city", "san diego", "pittsburgh", "montreal", "vancouver", "tokyo", "saltlakecity", "paris", "amsterdam"]:
# radius_x = 1
# radius_y = 1
regions.append((name, center_gps, radius_x, radius_y))
return regions



def get_satellite_image(center_gps, zoom, api_key):
request = "https://maps.googleapis.com/maps/api/staticmap?center="+str(center_gps[1])+","+str(center_gps[0])+"&zoom="+str(zoom)+"&key="+api_key+"&size=576x576&maptype=satellite"
# print(request)
response = requests.get(request)
f = open("data/imagery/test.png", "wb")
f.write(response.content)
f.close()
image = Image.open("data/imagery/test.png")
return image

def main(api_key, out_dir):
regions = get_regions()
print(regions)
SIZE = 10
s = 0 - (SIZE // 2)
l = (SIZE // 2) + 1
boundsDict = {}
for region in regions:
largerimage = Image.new('RGB', (576*(SIZE+1), 576*(SIZE+1)))
print(largerimage.size)
minX, minY = math.inf, math.inf
maxX, maxY = 0, 0
for x in range(s, l):
for y in range(s, l):
center_gps = (region[1][0] + x * 810.0 / float(2 ** ZOOM), region[1][1] + y * 500.0 / float(2 ** ZOOM))
# Print bounding box
bounding = ((center_gps[1] - 405 / float(2 ** ZOOM)), (center_gps[0] - 288 / float(2 ** ZOOM)), (center_gps[1] + 405 / float(2 ** ZOOM)), (center_gps[0] + 288 / float(2 ** ZOOM)))
# print(center_gps)
print(x, y)
if bounding[0] < minX:
minX = bounding[0]
if bounding[1] < minY:
minY = bounding[1]
if bounding[2] > maxX:
maxX = bounding[2]
if bounding[3] > maxY:
maxY = bounding[3]
image = get_satellite_image(center_gps, ZOOM, api_key)
largerimage.paste(image, ((x-s)*576, (-y-s)*576))
largerimage.save(os.path.join(out_dir, f"{region[0]}.png"))
boundsDict[region[0]] = (minX, minY, maxX, maxY)
print(boundsDict)
if __name__ == "__main__":
import sys
api_key = os.environ("MAPS_API_KEY")
out_dir = "data/imagery"
main(api_key, out_dir)
27 changes: 27 additions & 0 deletions get_masks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import osmnx as ox
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt
from PIL import Image

regions = {'amsterdam': (52.36443115222168, 4.885260921630859, 52.37551284777832, 4.901809078369141), 'london': (51.49654515222168, -0.026412578369140623, 51.50762684777832, 0), 'utrecht': (52.09445915222168, 4.991725921630859, 52.10554084777832, 5.008274078369141), 'copenhagen': (55.69445915222168, 12.54172592163086, 55.70554084777832, 12.558274078369141), 'strasbourg': (48.59445915222168, 7.691725921630859, 48.60554084777832, 7.70827407836914), 'paris': (48.89445915222168, 2.3417259216308595, 48.90554084777832, 2.3582740783691407)}

for region in regions:
G_road = ox.graph_from_bbox((regions[region][1], regions[region][0], regions[region][3], regions[region][2]), network_type='drive')
G_bike = ox.graph_from_bbox((regions[region][1], regions[region][0], regions[region][3], regions[region][2]), network_type='bike')
# Make figure same size as image
# fig, ax = plt.subplots(figsize=(2880/300, 2880/300), dpi=300)
fig, ax = ox.plot_graph(G_bike, show=False, close=False, node_size=0, edge_color='b', edge_linewidth=5, bgcolor='#000')
fig, ax = ox.plot_graph(G_road, show=False, close=False, node_size=0, edge_color='r', edge_linewidth=6, bgcolor='#000', ax=ax)
plt.axis('off')
SIZE = 10
size = 576*(SIZE+1), 576*(SIZE+1)
fig.set_size_inches(size[0]/300, size[1]/300)
plt.gca().set_position([0, 0, 1, 1])
plt.gca().set_xlim([regions[region][1], regions[region][3]])
plt.gca().set_ylim([regions[region][0], regions[region][2]])
plt.savefig(f"data/masks/{region}.png", pad_inches=0, dpi=300)
plt.close()
# Resize to 2880x2880

print(f"Saved {region}.png")
83 changes: 83 additions & 0 deletions masks.ipynb

Large diffs are not rendered by default.

Loading