1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import json
- import requests
- from shapely import geometry, Point
- from qwen_agent.config.gis_config import tdt_config
- from qwen_agent.tools.gis.turf_util import proj_transform
- # http://api.tianditu.gov.cn/geocoder?ds={"keyWord":"北京市延庆区延庆镇莲花池村前街50夕阳红养老院"}&tk=您的密钥
- class GeocoderTDT:
- def __init__(self, keywords=None):
- self.keywords = keywords
- self.url = tdt_config.get("geocoder_url")
- self.tk = tdt_config.get("tk")
- def decoder_address(self, address=None) -> geometry:
- print(f"query address: {address}")
- if address is None:
- address = self.keywords
- response = requests.get(self.url, params={
- "ds": json.dumps({"keyWord": address}, ensure_ascii=False),
- "tk": self.tk,
- })
- try:
- location = response.json().get('location')
- lon = location["lon"]
- lat = location["lat"]
- # 查询出来的是4326坐标系
- x, y = proj_transform(lon, lat, 4326, 4490)
- return Point(y, x).wkt
- except Exception as e:
- print(f"地理编码发生错误:{e}")
- return None, None
- def getsf(str):
- if str is None: return 'F'
- if 'G' in str or 'S' in str:
- return 'S'
- else:
- return 'F'
- def get_way_level(ref):
- if str is None:
- return None
- if 'G' in ref:
- return '国道'
- elif 'S' in ref:
- return '省道'
- elif 'X' in ref:
- return '县道'
- elif 'Y' in ref:
- return '乡道'
- if __name__ == '__main__':
- # print(GeocoderTDT().decoder_address("杭州市滨江区正泰大厦"))
- a = 'G20'
- print(get_way_level('Y01'))
|