Skip to content

Commit

Permalink
Up-a-dated the scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
Tiago Marques Godinho committed Apr 3, 2019
1 parent 4d56ea1 commit 0734a93
Show file tree
Hide file tree
Showing 2 changed files with 130 additions and 2 deletions.
26 changes: 24 additions & 2 deletions get_areas.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
import numpy
import csv

import json

import progressbar
from pprint import pprint

Expand All @@ -24,15 +26,35 @@
# 'token': str(TOKEN)
}

def request_objects_around_coordinate(lat,long, mapNumber=77):
def request_objects(geometry_object_str, mapNumber=77):
req_params = _DEFAULT_PARAMS
req_params['geometry'] = "{}, {}".format(long, lat)
req_params['geometry'] = geometry_object_str

url = 'https://servsig.cm-porto.pt/arcgis/rest/services/OpenData_APD/OpenData_APD/MapServer/{}/query'.format(mapNumber)
r = requests.get(url, params=req_params)

return r.json()


def request_objects_around_coordinate(lat,long, mapNumber=77):
s = "{}, {}".format(long, lat)
return request_objects(s, mapNumber)

def write_csv(category, dataList, t=None):
if t is None:
t = category

fname = "POI_{}_{}.csv".format(category, t)
with open(fname, 'w', newline='') as csvfile:
fieldnames = ['type', 'lat', 'long', 'value', 'category']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

writer.writeheader()
for o in dataList:
writer.writerow(o)

print("Writen: ", fname)

if __name__ == "__main__":
coords = []
for lat in numpy.arange(41.131386,41.208026, 0.0018):
Expand Down
106 changes: 106 additions & 0 deletions get_poi_coords.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
import requests
import numpy
import csv

import progressbar

import get_areas
import json

from pprint import pprint

_DEFAULT_PARAMS = {
'f': 'json',
#'where': "1=1", # 'where' clause is mandatory it takes a postgres-like query
# 'where': "n_o > 10", # example where the number of reports event was over 10
# 'where': "freguesia = 'Bonfim'", # example for all the reports in 'Bonfim'
# 'where': "ano > 2000", # Caveat: For example in this dataset, this will not work as 'ano' is defined as "esriFieldTypeString"
#'returnGeometry': 'true',
#'outFields': '*', # the fields that you want returned
#'orderByFields': 'objectid ASC',
# 'resultOffset': '4000',
#'resultRecordCount': '10', # for the purpose of the demonstration we are limiting to 10 results
'geometryType': 'esriGeometryPoint',
'geometry': '-8.629500540214053, 41.15801561717854',
'inSR': '4326',
'outSR': '4326',
'returnIdsOnly': True
# 'token': str(TOKEN)
}

def request_objects_around_coordinate(lat,long, mapNumber=77):
req_params = _DEFAULT_PARAMS
req_params['geometry'] = "{}, {}".format(long, lat)

url = 'https://servsig.cm-porto.pt/arcgis/rest/services/OpenData_APD/OpenData_APD/MapServer/{}/query'.format(mapNumber)
r = requests.get(url, params=req_params)

return r.json()

if __name__ == "__main__":
myEnvelope = {"xmin" : -8.71268, "ymin" : 41.131386, "xmax" : -8.560180000000031, "ymax" : 41.20698600000012}
get_areas._DEFAULT_PARAMS['geometry'] = json.dumps(myEnvelope)
get_areas._DEFAULT_PARAMS['geometryType'] = 'esriGeometryEnvelope'
get_areas._DEFAULT_PARAMS['returnIdsOnly'] = False

## Numbers
knownMaps = [
{
'map_number': 48,
'type': 'Hospital',
'cat': 'Health'
},
{
'map_number': 49,
'type': 'CentroDeSaude',
'cat': 'Health'
},
{
'map_number': 50,
'type': 'Farmacia',
'cat': 'Health'
},
{
'map_number': 63,
'type': 'PreEscolar',
'cat': 'School'
},
{
'map_number': 65,
'type': 'Basico',
'cat': 'School'
},
{
'map_number': 67,
'type': 'Secundario',
'cat': 'School'
},
#{
# 'map_number': 69,
# 'type': 'Universitario',
# 'cat': 'School'
#}
{
'map_number': 26,
'type': 'SuperMercado',
'cat': 'Market'
}
]

for descr in knownMaps:
print("HelloWorld")

data = get_areas.request_objects(json.dumps(myEnvelope), mapNumber=descr['map_number'])

dataList = []
for f in data['features']:
l0 = f['geometry']['y']
l1 = f['geometry']['x']

ret_obj = {'type': descr['cat'], 'lat': l0, 'long': l1, 'value': 1, 'category': descr['cat']}
dataList.append(ret_obj)

print("Writting CSV")
get_areas.write_csv(descr['cat'], dataList, t=descr['type'])

print("Found", len(dataList), "POIs")

0 comments on commit 0734a93

Please sign in to comment.