Итак, я беру электронную таблицу из примерно 5000 адресов и отправляю ее из API геолокации Карт Google, чтобы получить значения широты и долготы, а также отформатированные значения адресов, так как многие из них обозначены здесь.
Проблема, которую яу меня есть их отсутствие использования именованного keys
для меня, чтобы использовать и позиции смещаются вокруг в зависимости от того, что доступно.Например, вот адрес, который является совершенно обычным:
{
"results" : [
{
"address_components" : [
{
"long_name" : "27502",
"short_name" : "27502",
"types" : [ "street_number" ]
},
{
"long_name" : "Antonio Parkway",
"short_name" : "Antonio Pkwy",
"types" : [ "route" ]
},
{
"long_name" : "Ladera Ranch",
"short_name" : "Ladera Ranch",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Orange County",
"short_name" : "Orange County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "California",
"short_name" : "CA",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "92694",
"short_name" : "92694",
"types" : [ "postal_code" ]
}
]
Теперь, например, вот местоположение, которое находится в пределах подпремии:
{
"results" : [
{
"address_components" : [
{
"long_name" : "117",
"short_name" : "117",
"types" : [ "subpremise" ]
},
{
"long_name" : "3401",
"short_name" : "3401",
"types" : [ "street_number" ]
},
{
"long_name" : "North Miami Avenue",
"short_name" : "N Miami Ave",
"types" : [ "route" ]
},
{
"long_name" : "Wynwood",
"short_name" : "Wynwood",
"types" : [ "neighborhood", "political" ]
},
{
"long_name" : "Miami",
"short_name" : "Miami",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Miami-Dade County",
"short_name" : "Miami-Dade County",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Florida",
"short_name" : "FL",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "33127",
"short_name" : "33127",
"types" : [ "postal_code" ]
}
]
Проблема с этим заключается вВ первом случае address_components[0].short_name
будет street_number
, как я хочу, но в примере 2 address_components[0].short_name
будет фактически номером лота.
В скриптовой манере это делает невозможным точное построение моего JSON, поскольку в некоторых областях мое значение Zip Code
будет названием улицы, потому что был список дополнительных адресов.
КакВы бы порекомендовали мне противостоять этому, чтобы убедиться, что я всегда получаю именно те данные, которые запрашиваю, а не то, что происходит в тот момент в этой позиции?
Ниже приведен пример того, как это может испортить ситуацию.:
"731": {
"City": "Noblesville",
"Street": "Norell Ln",
"Type": "dsg",
"StreetNum": "13157",
"Zip": "US",
"State": "Hamilton County",
"Name": "Noblesville ",
"Region": "Ohio Valley",
"Long": "-85.93149269999999",
"StateAbr": "Hamilton County",
"Phone": "3177761687",
"Lat": "39.9901088"
}
Это не всегда так, возможно, 200-300 из них ошибочны, в то время как остальные верны, но догадываться и надеяться очень неэффективно.
Ради включения некоторых из моего сценария:
$builtAddress = "$street $city $state $zip"
Write-Verbose "Built Address: $builtAddress"
$addressArray.Add($builtAddress) > $null
$req = Invoke-WebRequest "https://maps.googleapis.com/maps/api/geocode/json?address=$builtAddress&key=AIzaSyDRo-UGY91_EiB2DeYzBU21-3FcaqIanPo"
$location = $req.Content | ConvertFrom-Json
$lat = $location.results[0].geometry.location.lat
$long = $location.results[0].geometry.location.lng
$z = $location.results[0].address_components
$name = $z.
$phone = $phone
$region = $region
$objectProps = @{
$store = @{
Name = "$name"
Lat = "$lat"
Long = "$long"
StreetNum = "$streetNum"
Street = "$street"
City = "$city"
State = "$state"
StateAbr = "$stateAb"
Zip = "$zip"
Phone = "$phone"
Region = "$region"
Type = "$type"
}
}
Write-Verbose $store
$jsonObj = New-Object psobject -Property $objectProps | ConvertTo-Json -depth 100 | Out-File C:\Users\admin-dksc104694\Desktop\Map_Data\JSON\$outputFile -Append
Write-Output ',' | Out-File C:\Users\admin-dksc104694\Desktop\$outputFile -Append
}