def test_multiple(self): districts = ArcGIS( "http://tigerweb.geo.census.gov/arcgis/rest/services/TIGERweb/Legislative/MapServer" ) # Gets 114th and 113th congressional districts for hawaii. features = districts.getMultiple([0, 12], where="STATE = 15") self.assertEqual(len(features.get('features')), 4)
def test_count(self): states = ArcGIS("http://tigerweb.geo.census.gov/arcgis/rest/services/Basemaps/CommunityTIGER/MapServer") count = states.get(28, count_only=True) self.assertEqual(count, 56) count = states.get(28, where="NAME = 'Florida'", count_only=True) # Only one Florida. self.assertEqual(count, 1)
def test_field_filter(self): districts = ArcGIS("http://services.arcgis.com/P3ePLMYs2RVChkJx/ArcGIS/rest/services/USA_Congressional_Districts/FeatureServer") # How many fields are there in the layer? num_fields = districts.enumerate_layer_fields(0) self.assertEqual(len(num_fields), 12) # We should only have one property, OBJECTID. features = districts.get(0, where="STATE_ABBR = 'IN'", fields=['OBJECTID']) self.assertEqual(len(features.get('features')[0].get('properties')), 1)
def test_count(self): states = ArcGIS( "http://tigerweb.geo.census.gov/arcgis/rest/services/Basemaps/CommunityTIGER/MapServer" ) count = states.get(28, count_only=True) self.assertEqual(count, 56) count = states.get(28, where="NAME = 'Florida'", count_only=True) # Only one Florida. self.assertEqual(count, 1)
def test_field_filter(self): districts = ArcGIS( "http://services.arcgis.com/P3ePLMYs2RVChkJx/ArcGIS/rest/services/USA_Congressional_Districts/FeatureServer" ) # How many fields are there in the layer? num_fields = districts.enumerate_layer_fields(0) self.assertEqual(len(num_fields), 12) # We should only have one property, OBJECTID. features = districts.get(0, where="STATE_ABBR = 'IN'", fields=['OBJECTID']) self.assertEqual(len(features.get('features')[0].get('properties')), 1)
def test_features(self): districts = ArcGIS("http://services.arcgis.com/P3ePLMYs2RVChkJx/ArcGIS/rest/services/USA_Congressional_Districts/FeatureServer") features = districts.get(0, "STATE_ABBR = 'IN'") # Make sure we have all of the actual congressional # district shapes for Indiana. self.assertEqual(len(features.get('features')), 9) # Make sure they're polygons self.assertEqual(features.get('features')[0].get('geometry').get('type'), "Polygon") # Make sure it's valid json when we dump it self.assertTrue(features == json.loads(json.dumps(features))) # Make sure a value that should be there is ther. self.assertEqual(features.get('features')[0].get('properties').get('STATE_ABBR'), 'IN')
def test_features(self): districts = ArcGIS( "http://services.arcgis.com/P3ePLMYs2RVChkJx/ArcGIS/rest/services/USA_Congressional_Districts/FeatureServer" ) features = districts.get(0, "STATE_ABBR = 'IN'") # Make sure we have all of the actual congressional # district shapes for Indiana. self.assertEqual(len(features.get('features')), 9) # Make sure they're polygons self.assertEqual( features.get('features')[0].get('geometry').get('type'), "Polygon") # Make sure it's valid json when we dump it self.assertTrue(features == json.loads(json.dumps(features))) # Make sure a value that should be there is ther. self.assertEqual( features.get('features')[0].get('properties').get('STATE_ABBR'), 'IN')
def update_registered_organizations(request): URL = 'http://xmaps.indy.gov/arcgis/rest/services/RegisteredOrganizations/RegisteredOrganizations/MapServer' LAYER = 0 # clear out the db of previous registered organizations number_deleted = registered_organization.objects.all().delete() service = ArcGIS(URL) geojson = service.get(LAYER, fields='*') records = geojson['features'] number_created = 0 number_errors = 0 for record in records: try: geometry = GEOSGeometry(str(record['geometry'])) if not geometry.valid: geometry = geometry.buffer(0) except (GDALException, ValueError): number_errors = number_errors + 1 #print "Error on", record['properties']['ORG_NAME'] try: x = registered_organization( name=record['properties']['ORG_NAME'], first_name=record['properties']['FIRSTNAME'], last_name=record['properties']['LASTNAME'], email=record['properties']['EMAIL'], geometry=geometry, ) x.save() if registered_organization.objects.filter( geometry__isvalid=True).filter(id=x.id).count() == 0: #print "Error, invalid geometry", record['properties']['ORG_NAME'] pass else: number_created = number_created + 1 except IntegrityError: number_errors = number_errors + 1 #print "IntegrityError on ", record['properties']['ORG_NAME'] return HttpResponse( '<html><body><ul><li>Number deleted: {0}</li><li>Number created: {1}</li><li>Number errors: {2}</li></ul></body></html>' .format(number_deleted[0], number_created, number_errors))
#! /usr/local/bin/env python from arcgis import ArcGIS from geojson import dumps, FeatureCollection, Feature import requests from bs4 import BeautifulSoup import xmltodict NWGCC_layers = ArcGIS( "https://services3.arcgis.com/T4QMspbfLg3qTGWY/ArcGIS/rest/services/NWCC_Operational_Layers/FeatureServer" ) perimeters = NWGCC_layers.get(2) outfile = open('current_perimeters.geojson', 'w') outfile.write(dumps(perimeters)) #def esri_download(service, layer_num, layer_name, file_name) """def compose_fire_data(): fire_info = {} r = requests.get('https://gacc.nifc.gov/nwcc/information/fire_info.aspx') t = r.text soup = BeautifulSoup(t) a = soup.find_all(class_="accordion") for incident in a: #print(incident) fire_hash = {} tables = incident.find_all("table") for tb in tables: f = tb.find_all("td") for c in f: k = c.find("label").string
def test_multiple(self): districts = ArcGIS("http://tigerweb.geo.census.gov/arcgis/rest/services/TIGERweb/Legislative/MapServer") # Gets 114th and 113th congressional districts for hawaii. features = districts.getMultiple([0, 12], where="STATE = 15") self.assertEqual(len(features.get('features')), 4)
def __init__(self, url): ArcGIS.__init__(self, url)
def handle(self, *args, **options): source = "https://gis.yakimawa.gov/arcgis101/rest/services/CouncilDistricts/Analysis/MapServer" service = ArcGIS(source) if options['days']: target_day = datetime.date.today() - datetime.timedelta(options['days']) else: target_day = datetime.date.today() - datetime.timedelta(1) tday = target_day.strftime("%m/%d/%Y") json_raw = service.get(0, where="CallDate = '%(tday)s'" % {'tday': tday}) calls_list = json_raw['features'] feature_count = 0 lookup = { "ACCIDENT HITRUN": "TR", "ACCIDENT INJURY": "TR", "ACCIDENT NO INJ": "TR", "ACCIDENT UNKNOW": "TR", "ASSAULT WEAPON": "VI", "CIVIL MATTER": "CV", "COURT ORDER SER": "CV", "COURT ORDER VIO": "CV", "DOMESTIC": "DM", "DRUGS": "DR", "OVERDOSE": "DR", "DUI": "DR", "CUSTODIAL INTER": "DM", "MENTAL SUBJECT": "OT", "SUICIDAL PERSON": "OT", "NOISE COMPLAINT": "OT", "TRESPASSING": "PR", "UNWANTED GUEST": "OT", "ILLEGAL DUMPING": "OT", "ABUSE NEGLECT": "DM", "AGENCY ASSIST": "OT", "ATMT TO LOCATE": "OT", "CITIZEN ASSIST": "CV", "CITIZEN DISPUTE": "CV", "CITIZEN COMPLAI": "CV", "FIREWORKS": "OT", "FOUND PROPERTY": "PR", "INFORMATION": "OT", "MISSING PERSON": "OT", "TRANSPORT": "OT", "WARRANT SERVICE": "OT", "BURGLARY": "PR", "RECOVRD STOLEN": "PR", "THEFT": "PR", "THEFT-VEHICLE": "PR", "VEHICLE PROWL": "PR", "MAL MISCHIEF": "PR", "FRAUD": "PR", "SUSPICIOUS CIRC": "SC", "PROWLER": "PR", "HARASSMENT": "VI", "THREATS": "VI", "PARKING PROBLEM": "TR", "TRAFFIC HAZARD": "TR", "TRAFFIC OFFENSE": "TR", "TRAFFIC STOP": "TR", "ASSAULT": "VI", "DEATH INVEST": "VI", "ROBBERY": "VI", "SHOTS FIRED": "VI", "WEAPON OFFENSE": "VI", "WANTED PERSON": "OT", "ABANDONED VEHIC": "OT", "LOST PROPERTY": "PR", "INDUSTRIAL ACC": "OT" } call_natures = [] """propertycrime = ['BURGLARY', 'THEFT', 'THEFT-VEHICLE', 'VEHICLE PROWL', 'MAL MISCHIEF', 'RECOVERD STOLEN'] violence = ['ASSAULT', 'DEATH INVEST', 'ROBBERY', 'SHOTS FIRED', 'WEAPON OFFENSE'] accident = ['ACCIDENT HITRUN', 'ACCIDENT INJURY', 'ACCIDENT NO INJ', 'ACCIDENT UNKOW'] traffic = ['PARKING PROBLEM', 'TRAFFIC HAZARD', 'TRAFFIC OFFENSE', 'TRAFFIC STOP'] drugs = ['DRUGS', 'OVERDOSE', 'DUI']""" for call in calls_list: g = call['geometry']['coordinates'] p = call['properties'] new_callid = int(p['CallID']) try: Calls.objects.get(callid=new_callid) except Calls.DoesNotExist: c = Calls() c.callid = new_callid c.lat, c.lon = g[0], g[1] c.geom = GEOSGeometry('POINT({:.6f} {:.6f})'.format(c.lat, c.lon), srid=4326) c.nature = p['Nature'].strip().upper() if c.nature not in call_natures: call_natures.append(c.nature) try: c.callgroup = lookup[c.nature] except: c.callgroup = "NT" """if c.nature in propertycrime: c.callgroup = 'PR' elif c.nature in violence: c.callgroup = "VI" elif c.nature in accident: c.callgroup = "AX" elif c.nature in traffic: c.callgroup = "TR" elif c.nature in drugs: c.callgroup = "DR" """ c.callcategory = p['CallCategory'].strip().upper() c.address = p['Address'].strip() c.calldatetime = datetime.datetime.fromtimestamp(p['CallDateTime'] / 1000) if c.callgroup != "NT": c.save() feature_count += 1 self.stdout.write('processed {} features'.format(feature_count)) categoryfilename = datetime.datetime.today().strftime('%m%d%y') + 'categories' categoryfile = open(os.path.join(os.path.expanduser('~/Documents/'), categoryfilename), 'w') for cn in call_natures: categoryfile.write(cn) categoryfile.write(str('\n')) categoryfile.close()