Usage
Basic Usage
The core functionality of geosupport-suggest is to find valid addresses from partial input:
from geosupport import Geosupport
from suggest import GeosupportSuggest
# Create a Geosupport object
g = Geosupport()
# Create a GeosupportSuggest object
s = GeosupportSuggest(g)
# Get suggestions for an address
results = s.suggestions('100 Gold')
# Print the results
for result in results:
print(f"{result['House Number - Display Format']} {result['First Street Name Normalized']}, {result['First Borough Name']}")
Advanced Features
Memory Caching
Enable memory caching to improve performance for repeated queries:
# Create with caching enabled
s = GeosupportSuggest(g, use_cache=True, cache_size=500, cache_ttl=3600)
# Repeated calls with the same input will use the cache
results1 = s.suggestions('100 Gold St') # Makes API call
results2 = s.suggestions('100 Gold St') # Uses cached result
Parallel Processing
For better performance when searching across multiple boroughs:
# Use parallel processing
results = s.suggestions('100 Gold St', parallel=True)
Batch Processing
Process multiple addresses at once:
addresses = [
'100 Gold St',
'350 5th Ave',
{'address': '1 Police Plaza', 'borough_code': 1}
]
# Process all addresses
batch_results = s.suggestions_batch(addresses, parallel=True)
GeoJSON Export
Convert results to GeoJSON format for mapping:
# Get suggestions
results = s.suggestions('350 5th Ave')
# Convert to GeoJSON
geojson = s.to_geojson(results)
# Write to file
import json
with open('addresses.geojson', 'w') as f:
json.dump(geojson, f)
Normalized Results
Get standardized result format:
# Get suggestions
results = s.suggestions('350 5th Ave')
# Normalize to consistent format
normalized = s.normalize_results(results)
# Normalized results have consistent keys
for address in normalized:
print(f"{address['house_number']} {address['street']}, {address['borough']}")
if address['coordinates']:
print(f"Coordinates: {address['coordinates']['latitude']}, {address['coordinates']['longitude']}")
Using Context Manager
Use as a context manager to automatically clean up resources:
with GeosupportSuggest(g) as s:
results = s.suggestions('100 Gold St')
# Process results
# Resources are automatically cleared when exiting the context
Rate Limiting
Protect APIs with rate limiting:
# Limit to one request per second
s = GeosupportSuggest(g, rate_limit=1.0)
# Calls will be spaced at least 1 second apart
results1 = s.suggestions('100 Gold St')
results2 = s.suggestions('200 Broadway')