技术路线选择

我是使用的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仓库
中国长时间序列省市县数据CTAmapwww.shengshixian.comhttps://github.com/ruiduobao/shengshixian.com
空间数据介绍网www.gisrsdata.comhttps://github.com/ruiduobao/gisrsdata.com
土地覆盖和DEM数据下载网www.landcover100.comhttps://github.com/ruiduobao/landcover100
省市县乡村五级区划查询下载网map.ruiduobao.comhttps://github.com/ruiduobao/gaode_MAP_CUN
epsg坐标系查询网站epsg.ruiduobao.comhttps://github.com/ruiduobao/epsg.ruiduobao.com

参考

网站源码和坐标系json文件.https://github.com/ruiduobao/epsg.ruiduobao.com

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐