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'))