最近想統計下公司使用者在中國地圖上的分別情況,但使用者登錄檔中填寫的單位資訊比較混亂,提取省份、城市名稱較困難,最後決定用ip位址來查詢對應資訊。搜尋到兩種常用的方式:
採用純真資料庫qqwry.dat,傳入ip返回省+城市名稱,無經緯度資訊;缺點:返回的位址資訊太詳細,有的能定位到小區名稱,不利於歸類統計數量;優點:qqwry.dat資料庫更新快且位址資訊更具體,部分能定位到縣或小區。
# 注意新增引用 analy_user為我的工程名
from analy_user.iplocator import *
# iplocator呼叫一次即可,建議放在迴圈外,節約時間
ipl = iplocator("qqwry.dat")
address = ipl.getipaddr(ipl.str2ip(ip])).split(' ')
city = address[0]
如果想用純真資料庫,又想獲取經緯度,可以呼叫python的geopy庫,由城市名獲取經緯度。
from geopy.geocoders import nominatim
from geopy.exc import geocodertimedout
geolocator = nominatim()
point= geolocator.geocode(city)
偶爾會提示server time out,原因不明。設定超時時間,可減少中斷次數,但治標不治本。
point = geolocator.geocode(city,timeout = 5000)
首先需要申請乙個申請金鑰(ak)(不知道白名單可使用預設位址0.0.0.0/0申請,按照官網上操作步驟,請求中傳入ip 和 ak秘鑰:
import urllib
import urllib2
defget_address
(ip):
url = "你的ak秘鑰&coor=bd09ll" % ip
req = urllib2.request(url)
res_data = urllib2.urlopen(req)
res = res_data.read().decode("unicode-escape") # 轉格式
jsonaddress = json.loads(res)
ifnot jsonaddress["status"]:
city = jsonaddress["content"]["address_detail"]["city"]
province = jsonaddress["content"]["address_detail"]["province"]
point = jsonaddress["content"]["point"]
return city ,province ,point
php根據經緯度排序,根據經緯度篩選距離段
sql 語句 select location.from select round 6378.138 2 asin sqrt pow sin 36.668530 pi 180 px lat pi 180 2 2 cos 36.668530 pi 180 cos px lat pi 180 pow si...
根據經緯度反位址解析
一.首先引入所申請的ak金鑰 二.簡單樣式處理一下 body,html l map r result 三.html 布局 下面的 是用來顯示地圖的 四.js 如下 var map new bmap.map l map map.centerandzoom new bmap.point 116.3287...
根據經緯度計算距離 Java
根據兩個位置的經緯度,來計算兩地的距離 單位為km 引數為double型別 long1 位置1經度 lat1 位置1緯度 long2 位置2經度 lat2 位置2緯度 public class distanceutils 根據兩個位置的經緯度,來計算兩地的距離 param longitudeuser...