2014-10-08 43 views
0

大家好...我的問題是關於如何找出一對地理座標的位置。抱歉,問題是分散的,因爲我做了一些搜索,把它們放在一起仍然找不到正確的方法。Python找出從非居住區座標到位置/地址

1st問題: 似乎Geopy是最好的地理編碼方式,如果某些非英文單詞的輸出不是問題。 (任何幫助熱烈歡迎解決非英文輸出問題)

但是我需要搜索的一些座標是在非居住區域。

的下面例如:

from geopy.geocoders import Nominatim 

geolocator = Nominatim() 
location = geolocator.reverse("81.79875708, -42.1875") 
print(location.address) 

它返回。

None 

當搜索這個座標上https://maps.google.com/,則表示最近的公認點「東北格陵蘭國家公園」,這是比「無」更好。

那麼我怎樣才能得到這個「最近的認可點」呢?

第二問題上使用「pygmaps」

aamap = pygmaps.maps(81.79875708, -42.1875, 16) 

輸出爲:

<pygmaps.maps instance at 0x000000000313CC08> 

什麼用的,以及如何把它變成文本?使用「類JSON」方式

問題:

response = urllib2.urlopen('https://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA') 
js = json.load(response) 
print js['results'][0]['geometry']['location'] 

有沒有辦法扭轉?即使用座標來找出其地址。

謝謝。

+0

我編輯了我的答案以添加更多詳細信息 – 2014-10-09 08:52:31

回答

1

我不能回答你所有的問題,但關於你的第二個問題,我想你使用print(aamap)來獲得輸出。 打印未指定打印方式的對象時的默認行爲是打印其類和其內存位置。這是你獲得的結果。

<pymaps.maps instance at 0x0000000000313CC08> 

測試此代碼來理解:

class NotPrintable(object): 
    def __init__(self, text): 
     """ Instanciation method """ 
     self.text = text 

class Printable(object): 
    def __init__(self, text): 
     """ Instanciation method """ 
     self.text = text 

    def __repr__(self): 
     """ Text representation of the object called by print""" 
     return "A printable object whose the value is : {0}".format(self.text) 

if __name__ == "__main__": 
    print(NotPrintable("StackOverFlowTest")) 
    print(Printable("StackOverFlowTest")) 

結果是:

<__main__.NotPrintable object at 0x7f2e644fe208> 
A printable object whose the value is : StackOverFlowTest 

你得到的結果表明,你不應該打印的項目,以可視化的內容。 https://code.google.com/p/pygmaps/ 它使用pymaps提供了示例代碼,它出現的可視化數據的好方法是::

#create the map object 
mymap = pygmaps.maps(37.428, -122.145, 16) 
#export the map 
mymap.draw('./mymap.html') 

即創建包含HTML頁面上的「谷歌」帶我到這個網站快速搜索你的地圖。 如果感興趣,你可以看看https://code.google.com/p/pygmaps/source/browse/trunk/pygmaps.py的地圖代碼,但它似乎是輸出對象數據的唯一方法。如果您確實需要提供文本輸出,您可能需要自己編寫導出代碼。

希望它能幫助!

=====編輯=====

關於GoogleMap的JSON API,看到的文檔:https://developers.google.com/maps/documentation/geocoding/

您可以在大約反向地理編碼第一線的信息發現,即

將地圖上的位置翻譯爲人類可讀地址的過程稱爲反向地理編碼。

看到這個格外:https://developers.google.com/maps/documentation/geocoding/#ReverseGeocoding

這裏是詢問關於它的緯度爲「40.71」的位置信息的一個例子,經度爲「-73.96」:

https://maps.googleapis.com/maps/api/geocode/json?latlng=40.71,-73.96&key=API_KEY 

這裏是有關API_key的文檔:https://developers.google.com/console/help/#UsingKeys

+0

謝謝,ArthurVaïsse。讓我消化這一點。 – 2014-10-08 07:08:47

+0

沒問題。如果有些觀點不可理解,請不要猶豫詢問更多信息。我很好奇你會保留的解決方案。即使不是來自我。 – 2014-10-08 11:52:58

+0

感謝後續,亞瑟Vaïsse。順便說一句,如何找出我的API_KEY? google儀表板已更改... – 2014-10-14 05:27:36