def find_location(self, location, output_type=None, output_file=None): """ Get information on a location based on a simple query string. :param location: Location query. :type location: String. :param output_type: Output type specified by user. :type output_type: String. :param output_file: Output file specified by user. :type output_file: String :returns: Json output from the api. :rtype: String """ params = { 'f': 'json', 'str': location } result = self.conn.get('/findLocation2', params=params) if result.status_code != 200: err = "An error occurred during request: status {0}" raise Exception(err.format(result.status_code)) if output_type == 'stdout': pprint(result.json()) elif output_type == 'csv': data = result.json()['returnDataset']['Table1'] results = [MarResult(address) for address in data] self._result_to_csv(results, output_file) return result.json()
def reverse_address_id(self, aid, output_type=None, output_file=None): """ Returns mars location result when given a valid address id (aid). :param aid: address id to lookup :type aid: integer :param output_type: Output type specified by user. :type output_type: str :param output_file: Output file specified by user. :type output_file: str :returns: Json output from the api. :rtype: json Example resulting API url: http://citizenatlas.dc.gov/newwebservices/locationverifier.asmx/findAID2?f=json&aid=233807 """ params = { 'f': 'json', 'AID': aid, } result = self.get('/findAID2', params=params) if result.status_code != 200: err = "An error occurred during request: status {0}" raise Exception(err.format(result.status_code)) if output_type == 'stdout': pprint(result.json()) elif output_type == 'csv': data = result.json()['Table1'] results = [MarResult(address) for address in data] self.result_to_csv(FIELDS, results, output_file) return result.json()
def find_location(self, location, output_type=None, output_file=None): """ Get information on a location based on a simple query string. Warning - can return unintuitive results due to overly loose string matching logic in the MAR server. Recommend using find_addr_string instead :param location: Location query. :type location: String. :param output_type: Output type specified by user. :type output_type: String. :param output_file: Output file specified by user. :type output_file: String :returns: Json output from the api. :rtype: String """ params = {'f': 'json', 'str': location} result = self.get('/findLocation2', params=params) if result.status_code != 200: err = "An error occurred during request: status {0}" logger.exception(err.format(result.status_code)) raise Exception(err.format(result.status_code)) if output_type == 'stdout': pprint(result.json()) elif output_type == 'csv': data = result.json()['returnDataset']['Table1'] results = [MarResult(address).data for address in data] self.result_to_csv(FIELDS, results, output_file) return result.json()
def reverse_geocode(self, xcoord, ycoord, output_type=None, output_file=None): """ Do a reverse geocode lookup for address/alias points within 200 meters from the given Maryland State Plane (NAD 83) coordinates and returns the nearest five. Returned distance is given in meters. :param xcoord: Xcoordinate :type xcoord: String :param ycoord: Ycoordinate :type ycoord: String :param output_type: Output type specified by user. :type output_type: String. :param output_file: Output file specified by user. :type output_file: String :returns: Json output from the api. :rtype: String """ params = { 'f': 'json', 'x': xcoord, 'y': ycoord } result = self.conn.get('/reverseGeocoding2', params=params) if result.status_code != 200: err = "An error occurred during request: status {0}" raise Exception(err.format(result.status_code)) if output_type == 'stdout': pprint(result.json()) elif output_type == 'csv': data = result.json()['Table1'] results = [MarResult(address) for address in data] self._result_to_csv(results, output_file) return result.json()
def reverse_lat_lng_geocode(self, latitude, longitude, output_type=None, output_file=None): """ Do a reverse geocode lookup for MAR address/alias points within 200 meters from the given Latitude and Longitude coordinates and returns the nearest five. The returned distance unit is meter. :param latitude: Latitude :type latitude: str :param longitude: Longitude :type longitude: str :param output_type: Output type specified by user. :type output_type: str :param output_file: Output file specified by user. :type output_file: str :returns: Json output from the api. :rtype: json """ params = { 'f': 'json', 'lat': latitude, 'lng': longitude } result = self.get('/reverseLatLngGeocoding2', params=params) if result.status_code != 200: err = "An error occurred during request: status {0}" raise Exception(err.format(result.status_code)) if output_type == 'stdout': pprint(result.json()) elif output_type == 'csv': data = result.json()['Table1'] results = [MarResult(address) for address in data] self.result_to_csv(FIELDS, results, output_file) return result.json()