重要前提
安装AI Skills的关键前提是:必须科学上网,且开启TUN模式,这一点至关重要,直接决定安装能否顺利完成,在此郑重提醒三遍:科学上网,科学上网,科学上网。查看完整安装教程 →
geocoder by dkyazzentwatwa/chatgpt-skills
npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill geocoder在地址和地理坐标之间进行转换。
from geocoder import Geocoder
geo = Geocoder()
# 地址转坐标
result = geo.geocode("1600 Amphitheatre Parkway, Mountain View, CA")
print(f"Coordinates: {result['lat']}, {result['lon']}")
# 坐标转地址
result = geo.reverse(37.4224, -122.0840)
print(f"Address: {result['address']}")
# 地理编码地址
python geocoder.py --geocode "Empire State Building, New York"
# 反向地理编码
python geocoder.py --reverse "40.7484,-73.9857"
# 批量地理编码 CSV
python geocoder.py --input addresses.csv --column address --output geocoded.csv
# 批量反向地理编码
python geocoder.py --input coords.csv --lat lat --lon lon --reverse-batch --output addresses.csv
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
class Geocoder:
def __init__(self, provider: str = "nominatim", api_key: str = None)
# 单次操作
def geocode(self, address: str) -> dict
def reverse(self, lat: float, lon: float) -> dict
# 批量操作
def batch_geocode(self, addresses: list, delay: float = 1.0) -> list
def batch_reverse(self, coordinates: list, delay: float = 1.0) -> list
# 文件操作
def geocode_csv(self, input: str, column: str, output: str) -> str
def reverse_csv(self, input: str, lat: str, lon: str, output: str) -> str
geo = Geocoder(provider="google", api_key="YOUR_KEY")
geo = Geocoder(provider="bing", api_key="YOUR_KEY")
{
"address": "1600 Amphitheatre Parkway, Mountain View, CA",
"lat": 37.4224764,
"lon": -122.0842499,
"components": {
"house_number": "1600",
"road": "Amphitheatre Parkway",
"city": "Mountain View",
"state": "California",
"postcode": "94043",
"country": "United States"
},
"raw": {...} # 提供商特定数据
}
{
"lat": 40.7484,
"lon": -73.9857,
"address": "20 W 34th St, New York, NY 10001, USA",
"components": {
"house_number": "20",
"road": "West 34th Street",
"city": "New York",
"state": "New York",
"postcode": "10001",
"country": "United States"
}
}
geo = Geocoder()
result = geo.geocode_csv(
input="customers.csv",
column="shipping_address",
output="customers_geocoded.csv"
)
print(f"Geocoded {result['success']} of {result['total']} addresses")
geo = Geocoder()
address = "123 Main St, Anytown"
result = geo.geocode(address)
if result:
print(f"Valid: {result['address']}")
print(f"Standardized: {result['components']}")
else:
print("Address not found")
geo = Geocoder()
locations = [
(40.7128, -74.0060),
(34.0522, -118.2437),
(41.8781, -87.6298)
]
for lat, lon in locations:
result = geo.reverse(lat, lon)
print(f"({lat}, {lon}): {result['address']}")
Nominatim 要求请求间隔为 1 秒。批量函数会自动处理此限制。
# 批量操作中的自动延迟
results = geo.batch_geocode(addresses, delay=1.0)
# 对于付费提供商,可以减少延迟
geo = Geocoder(provider="google", api_key="KEY")
results = geo.batch_geocode(addresses, delay=0.1)
result = geo.geocode("Invalid Address XYZ123")
if result is None:
print("Address not found")
elif result.get('error'):
print(f"Error: {result['error']}")
else:
print(f"Found: {result['address']}")
每周安装量
40
代码仓库
GitHub 星标数
23
首次出现
2026年1月24日
安全审计
已安装于
gemini-cli32
opencode32
codex30
cursor30
github-copilot28
claude-code28
Convert between addresses and geographic coordinates.
from geocoder import Geocoder
geo = Geocoder()
# Address to coordinates
result = geo.geocode("1600 Amphitheatre Parkway, Mountain View, CA")
print(f"Coordinates: {result['lat']}, {result['lon']}")
# Coordinates to address
result = geo.reverse(37.4224, -122.0840)
print(f"Address: {result['address']}")
# Geocode address
python geocoder.py --geocode "Empire State Building, New York"
# Reverse geocode
python geocoder.py --reverse "40.7484,-73.9857"
# Batch geocode CSV
python geocoder.py --input addresses.csv --column address --output geocoded.csv
# Batch reverse geocode
python geocoder.py --input coords.csv --lat lat --lon lon --reverse-batch --output addresses.csv
class Geocoder:
def __init__(self, provider: str = "nominatim", api_key: str = None)
# Single operations
def geocode(self, address: str) -> dict
def reverse(self, lat: float, lon: float) -> dict
# Batch operations
def batch_geocode(self, addresses: list, delay: float = 1.0) -> list
def batch_reverse(self, coordinates: list, delay: float = 1.0) -> list
# File operations
def geocode_csv(self, input: str, column: str, output: str) -> str
def reverse_csv(self, input: str, lat: str, lon: str, output: str) -> str
geo = Geocoder(provider="google", api_key="YOUR_KEY")
geo = Geocoder(provider="bing", api_key="YOUR_KEY")
{
"address": "1600 Amphitheatre Parkway, Mountain View, CA",
"lat": 37.4224764,
"lon": -122.0842499,
"components": {
"house_number": "1600",
"road": "Amphitheatre Parkway",
"city": "Mountain View",
"state": "California",
"postcode": "94043",
"country": "United States"
},
"raw": {...} # Provider-specific data
}
{
"lat": 40.7484,
"lon": -73.9857,
"address": "20 W 34th St, New York, NY 10001, USA",
"components": {
"house_number": "20",
"road": "West 34th Street",
"city": "New York",
"state": "New York",
"postcode": "10001",
"country": "United States"
}
}
geo = Geocoder()
result = geo.geocode_csv(
input="customers.csv",
column="shipping_address",
output="customers_geocoded.csv"
)
print(f"Geocoded {result['success']} of {result['total']} addresses")
geo = Geocoder()
address = "123 Main St, Anytown"
result = geo.geocode(address)
if result:
print(f"Valid: {result['address']}")
print(f"Standardized: {result['components']}")
else:
print("Address not found")
geo = Geocoder()
locations = [
(40.7128, -74.0060),
(34.0522, -118.2437),
(41.8781, -87.6298)
]
for lat, lon in locations:
result = geo.reverse(lat, lon)
print(f"({lat}, {lon}): {result['address']}")
Nominatim requires 1 second between requests. The batch functions handle this automatically.
# Automatic delay in batch operations
results = geo.batch_geocode(addresses, delay=1.0)
# For paid providers, can reduce delay
geo = Geocoder(provider="google", api_key="KEY")
results = geo.batch_geocode(addresses, delay=0.1)
result = geo.geocode("Invalid Address XYZ123")
if result is None:
print("Address not found")
elif result.get('error'):
print(f"Error: {result['error']}")
else:
print(f"Found: {result['address']}")
Weekly Installs
40
Repository
GitHub Stars
23
First Seen
Jan 24, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
gemini-cli32
opencode32
codex30
cursor30
github-copilot28
claude-code28
FastAPI官方技能:Python Web开发最佳实践与CLI工具使用指南
1,300 周安装