技术路线选择
我是使用的vue 3开发的网页界面,element-plus构建网页组件,openlayer展示地图,express提供后端API,vercel进行在线部署。
python获取所有坐标系
想要展示所有坐标系,那需要先获取坐标系,怎么获取了?可以读取gdal,也可以读取其他库,这里我使用了地理与气象分析包gma导出坐标系的相关信息,代码如下:
import json
import os
from multiprocessing import Pool, cpu_count
from gma import crs
def process_crs(CRS_ID):
try:
SR = crs.SpatRef(CRS_ID)
CRS_information_dict = {
"CRS_ID": CRS_ID,
"Name": SR.Name,
"AreaOfUse": SR.AeraOfUse,
"PlotAeraOfUse": SR.PlotAeraOfUse,
"Search_infomation": str(CRS_ID) + SR.Name.replace(" ", ""),
"PROJJSON": json.loads(SR.Export('PROJJSON'))
}
return CRS_information_dict
except Exception as e:
return None
def save_to_json(data, filename):
with open(filename, 'w') as json_file:
json.dump(data, json_file, indent=4)
def main():
# 获取系统的 CPU 核心数量
num_cores = cpu_count()
print(f"Using {num_cores} cores.")
# 创建一个进程池
with Pool(processes=num_cores) as pool:
# map 函数将 CRS_ID 范围分配给进程池中的进程
results = pool.map(process_crs, range(1, 50000))
# 过滤掉处理过程中返回 None 的结果
filtered_results = [crs_info for crs_info in results if crs_info is not None]
# 将所有CRS信息的列表转换为JSON格式的字符串
CRS_information_json = json.dumps(filtered_results, indent=4)
# 保存到文件CRS.json中
output_path = 'crs坐标系处理//CRS.json'
save_to_json(filtered_results, output_path)
if __name__ == '__main__':
main()
基于这个代码,我们就能获取到坐标系的原始信息,并且将各个坐标系的属性信息写入了json文件中。json文件已上传到github仓库中,感兴趣的可以自己下载一下。
搭建网站前端
网站的前端我使用了vue3框架+element-plus组件+vite+pinia状态管理+openlayer搭建地图界面。都是无关遥感地信的知识,我这里就不多介绍了。
前端路线选择
最后,为了练手,我还加了一个中英文字典进行网页的语言切换,搭建起来的网页长这样:
为了方便大家使用底图,我添加了7种高分辨率的遥感底图(星图、esri、必应、吉林、google(需要有条件的同学才能用)、mapbox等。
搭建网站后台
网站后台使用的express,只开发了一个API接口,是用来处理前端发送EPSG数字,后端收到后开始查询,再把查询到的信息发送给前端。
另外,开发过程我用了swagger,能比较方便的测试API。
总结
epsg.ruiduobao.com是一个完全开源、免费、无需登陆的坐标系查询网站,欢迎大家使用。
其他
下面这些是我做过的遥感地信相关领域的开源项目,欢迎大家在GitHub上标星:
名称 | 网址 | GitHub仓库 |
---|---|---|
中国长时间序列省市县数据CTAmap | www.shengshixian.com | https://github.com/ruiduobao/shengshixian.com |
空间数据介绍网 | www.gisrsdata.com | https://github.com/ruiduobao/gisrsdata.com |
土地覆盖和DEM数据下载网 | www.landcover100.com | https://github.com/ruiduobao/landcover100 |
省市县乡村五级区划查询下载网 | map.ruiduobao.com | https://github.com/ruiduobao/gaode_MAP_CUN |
epsg坐标系查询网站 | epsg.ruiduobao.com | https://github.com/ruiduobao/epsg.ruiduobao.com |
参考
网站源码和坐标系json文件.https://github.com/ruiduobao/epsg.ruiduobao.com