Пример #1
0
    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()
Пример #2
0
    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()
Пример #3
0
    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()
Пример #4
0
    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()
Пример #5
0
    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()