话说上篇文章发了PyProj坐标转换的东西之后,有读者在后台问我,说每次都要跑Python脚本,太麻烦了,能不能搞个网页打开就能用。
我想想,确实是啊。让同事用吧,得帮他装Python环境,配依赖,完了还得教他怎么运行,麻烦死。自己用倒是无所谓,但总归不太方便。
那就整一个Web服务吧,部署上去,浏览器打开就能用,手机也能访问,外业的时候查坐标也方便。说干就干。
Flask吧,这名字挺有意思。轻量级,代码少,部署快,适合我们这种小需求,够用就行。
坐标转换还是用PyProj,跟之前一样。
很简单:搞个Web接口,接收坐标参数,返回转换结果。
参数校验要做好,不然有人给你传个null或者乱码,程序直接崩。错误处理也整上,好歹告诉用户出啥问题了。
上代码,差不多这样:
from flask import Flask, request, jsonify
from pyproj import Transformer
app = Flask(__name__)
# 创建转换器
transformer = Transformer.from_crs('epsg:4326', 'epsg:3857', always_xy=True)
@app.route('/convert')
defconvert():
try:
lon = float(request.args.get('lon'))
lat = float(request.args.get('lat'))
x, y = transformer.transform(lon, lat)
return jsonify({'x': x, 'y': y})
except Exception as e:
return jsonify({'error': str(e)}), 400
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
跑起来访问 http://localhost:5000/convert?lon=120&lat=30 就出结果,JSON格式,自己解析。
手机想用的话,要么扔到公网服务器,要么内网通过IP访问。
目前只能WGS84转Web墨卡托,比较局限。后面可以加:
先这样,想起来再加。
生产环境debug一定关掉!血的教训。最好加个身份验证,省得被乱用。频率限制也整一个。
没了,想到啥说啥。有问题问,我知道的就答。
以往文章合集: