Python Bing地图地理编码数据流的结果不准确

Python Bing地图地理编码数据流的结果不准确,python,xml,post,geocoding,bing-maps,Python,Xml,Post,Geocoding,Bing Maps,我使用PythonPost请求对公司分支机构的地址进行地理编码,但结果非常不准确 我看了一下答案,但问题是有些结果并没有得到处理。我的问题不同,因为我所有的结果都不准确,即使是那些具有Confidence=“High”的结果。我有一个企业账户 以下是说明如何创建地理编码作业和上载数据的文档: 下面是我要上传的代码的基本版本: import requests SDS_Geocode_URL = "https://spatial.virtualearth.net/REST/v1

我使用PythonPost请求对公司分支机构的地址进行地理编码,但结果非常不准确

我看了一下答案,但问题是有些结果并没有得到处理。我的问题不同,因为我所有的结果都不准确,即使是那些具有
Confidence=“High”
的结果。我有一个企业账户

以下是说明如何创建地理编码作业和上载数据的文档:

下面是我要上传的代码的基本版本:

import requests    

SDS_Geocode_URL = "https://spatial.virtualearth.net/REST/v1/dataflows/geocode?"

geocode_post_vars = {
    "input": "xml",
    "output": "json",
    "content-type": "application/xml",
    "key": Bing_key,
}

geocode_Post_URL = (
    SDS_Geocode_URL
    + urllib.parse.urlencode(geocode_post_vars)
    + "&dataLocation="
    + "https://account-name.blob.core.windows.net/myDataFile.xml"
)

r = requests.post(geocode_Post_URL)
一旦数据被地理编码,我就使用GET请求来获取地理编码的XML

geocode_Results = requests.get(
    "https://spatial.virtualearth.net/REST/v1/dataflows/Geocode/"
    + jobID
    + "/output/succeeded?key=" + Bing_key
)

print(geocode_Results.text)
我得到的结果如下:

<GeocodeEntity Id="12040000">
    <GeocodeRequest Culture="en-US" IncludeNeighborhood="true" Query="Rush Truck Center - Los Angeles" IncludeQueryParse="true">
        <Address AddressLine="8830 Slauson Ave, Pico Rivera, CA 90660" AdminDistrict="California" CountryRegion="US" Locality="Pico Rivera" PostalCode="90660" />
    </GeocodeRequest>
    <GeocodeResponse Name="Los Angeles, CA" EntityType="PopulatedPlace" Confidence="High" MatchCodes="UpHierarchy">
        <Address AdminDistrict="CA" CountryRegion="United States" AdminDistrict2="Los Angeles County" FormattedAddress="Los Angeles, CA" Locality="Los Angeles" />
        <GeocodePoint CalculationMethod="Rooftop" Latitude="34.0522384643555" Longitude="-118.243347167969" Type="Point" UsageTypes="Display" />
        <QueryParseValue Property="Locality" Value="Los Angeles" />
        <BoundingBox SouthLatitude="33.6968193054199" WestLongitude="-118.683807373047" NorthLatitude="34.3506469726563" EastLongitude="-118.138854980469" />
        <Point Latitude="34.0522384643555" Longitude="-118.243347167969" />
    </GeocodeResponse>
    <StatusCode>Success</StatusCode>
    <TraceId>#######</TraceId>
</GeocodeEntity>

成功
#######
在我的地理编码请求中,我有一个特定的地址和公司分支机构名称(为这个问题编辑)。此外,我添加了城市、州、国家和zipcode属性,这些属性与文档中所述的完全相同。

即使有了所有这些信息,地理编码的响应数据返回的粒度也不比洛杉矶市更细,城市的纬度/经度坐标,而不是我提供的地址(记录在案,它离应该在的地方有十英里远)。


另外,当我通过Bing地图门户手动上传XML文件时,它非常准确。我是否格式化了请求,或者这是Bing问题?

我在您的请求数据中发现了几个问题:

  • 您要传递的“查询”值是兴趣点名称和位置的组合。地理编码器只处理地址。因此,在本例中,兴趣点名称被删除,地理编码器只使用“Los Angeles”,从而得到结果
  • 您正在将两种不同的地理代码查询类型混合到一个查询中。要么只使用“查询”,要么只使用单个地址部分(地址行、地址、AdminDistrict、CountryRegion、PostalCode)。在这种情况下,“query”值被用作忽略其他所有内容,使用单独的地址部分将比您的查询准确得多
  • 您正在将完整地址传入AddressLine字段。该地址应仅为街道地址(即“Slauson大道8830号”)
以下是请求的修改版本,可能会返回您期望的信息:

<GeocodeRequest Culture="en-US" IncludeNeighborhood="true" IncludeQueryParse="true">
        <Address AddressLine="8830 Slauson Ave" AdminDistrict="California" CountryRegion="US" Locality="Pico Rivera" PostalCode="90660" />
    </GeocodeRequest>

我发现您的请求数据中存在几个问题:

  • 您要传递的“查询”值是兴趣点名称和位置的组合。地理编码器只处理地址。因此,在本例中,兴趣点名称被删除,地理编码器只使用“Los Angeles”,从而得到结果
  • 您正在将两种不同的地理代码查询类型混合到一个查询中。要么只使用“查询”,要么只使用单个地址部分(地址行、地址、AdminDistrict、CountryRegion、PostalCode)。在这种情况下,“query”值被用作忽略其他所有内容,使用单独的地址部分将比您的查询准确得多
  • 您正在将完整地址传入AddressLine字段。该地址应仅为街道地址(即“Slauson大道8830号”)
以下是请求的修改版本,可能会返回您期望的信息:

<GeocodeRequest Culture="en-US" IncludeNeighborhood="true" IncludeQueryParse="true">
        <Address AddressLine="8830 Slauson Ave" AdminDistrict="California" CountryRegion="US" Locality="Pico Rivera" PostalCode="90660" />
    </GeocodeRequest>