1.在平常,我时常玩chatgpt,它是个好工具。在写代码,我时常玩copilot,它也是个好工具。
copilot是微软开发的,而微软是开发chatgpt的openai的股东,所以copilot也就是调用了chatgpt的接口,copilot可以视为类gpt的工具,同理,国内的文心一言也是如此。
类gpt的东西是一个好工具,真真正正的提高工作效率。
首先这不是广告,也不需要我给它们打广告。
这是一篇关于使用copilot、chatgpt的使用感受。
2.我使用了chatgpt一年多,切切实实提高工作效率,一些问题直接复制去问它。简直把它当成了百度使用。
chatgpt有缺点吗?是有的,对于特定知识,它只会胡说八道一塌糊涂。
比如,我问它:利用最小二乘法拟合RPC参数。
这时候,gpt在一本正经的胡说八道,因为我问到了它的知识盲区,而它却试图掩盖自身缺点。
这个时候,不是它的错,而我的错。我问了一些特定领域的问题,显示是想为难它,因为它没有接触过相关的资料,不懂也是正常的。
3.纵使存在缺点,但是gpt的优点是大于缺点的。
对于通用知识,它显得过于强大。有人考雅思用它来改作文进而提升。 ...
在路线规划和高精度地图要素采集的过程中,获取道路的中心线是非常关键的步骤。这个过程本质上是将特殊的面矢量转化为线矢量。深度学习技术,特别是卷积神经网络(CNN),可以用于识别图像中的道路,生成一个道路的面矢量图,其中每个像素都被标记为“道路”或“非道路”。然后,我们需要将这个面矢量图转化为道路的中心线。这通常可以通过使用骨架化或细化技术来实现,这些技术可以将二维的面矢量细化为一维的线矢量,即道路的中心线。这样,我们就可以从深度学习生成的道路面矢量图中获取到道路的中心线,为路线规划和高精度地图要素采集提供重要信息。
本文主要讲解如何端对端获取道路中心线,不涉及深度学习道路识别。
输入是道路面矢量,输出是道路中心线矢量
代码# -*- coding: utf-8 -*-
# @Time : 2024/4/21 20:48
# @File : road_centerline.py
# 获取代表道路轮廓(红线)的多边形中心线
import geopandas as gpd
import pygeoops
def generate_centerline(input_shapefil ...
在路线规划和高精度地图要素采集的过程中,获取道路的中心线是非常关键的步骤。这个过程本质上是将特殊的面矢量转化为线矢量。深度学习技术,特别是卷积神经网络(CNN),可以用于识别图像中的道路,生成一个道路的面矢量图,其中每个像素都被标记为“道路”或“非道路”。然后,我们需要将这个面矢量图转化为道路的中心线。这通常可以通过使用骨架化或细化技术来实现,这些技术可以将二维的面矢量细化为一维的线矢量,即道路的中心线。这样,我们就可以从深度学习生成的道路面矢量图中获取到道路的中心线,为路线规划和高精度地图要素采集提供重要信息。
本文主要讲解如何端对端获取道路中心线,不涉及深度学习道路识别。
输入是道路面矢量,输出是道路中心线矢量
代码# -*- coding: utf-8 -*-
# @Time : 2024/4/21 20:48
# @File : road_centerline.py
# 获取代表道路轮廓(红线)的多边形中心线
import geopandas as gpd
import pygeoops
def generate_centerline(input_shapefil ...
在地理信息系统(GIS)中,矢量数据是最基本的数据类型之一。它们用于表示地理空间中的对象,包括它们的形状、位置和属性。矢量数据的主要类型包括点(Point)、线(LineString)和面(Polygon)。在这个讨论中,我们将重点关注面矢量的数据结构和操作。
面矢量(Polygon)是由一个外部轮廓和零个或多个内部轮廓(空洞)组成的。外部轮廓定义了多边形的形状和大小,而内部轮廓则定义了多边形内部的空洞。理解这种数据结构是理解和操作地理数据的关键,无论是从文件中读取数据,还是创建自己的多边形对象。
在本文中,我们将首先介绍如何使用Python的shapely库创建和操作Polygon对象。然后,我们将介绍如何使用fiona库从shp文件中读取矢量数据。最后,我们将介绍多面(MultiPolygon)的概念,这是由多个面(Polygon)组成的几何对象,常用于表示一组不连续的地理区域,例如群岛。
让我们开始吧!
怎么读取shp文件首先我们学习一个知识点,如果将shp文件读取为Polygon对象。我们用到了Python的fiona库
import fiona
with fiona.open ...
安装cars库安装cars库,如果你是windows用户,需要安装微软的c++开发工具。地址如下:
https://visualstudio.microsoft.com/visual-cpp-build-tools/
安装过程如下图所示。
安装已成功。
在命令行输入:
pip install cars
cars库已安装成功。如下图所示。
1) 默认参数def hello(name, greeting="Hi"):
print(greeting, name)
hello("韩梅梅")
# Hi 韩梅梅
hello("韩梅梅", greeting = "你好")
# 你好 韩梅梅
在 hello(“韩梅梅”)中,我们没有在greeting中传递任何信息。这意味着它默认为 “hi
在hello(“韩梅梅”, greeting = “你好”)中,我们将 “hello “传入了 greeting。也就是说,我们覆盖了默认参数,并指定 greeting = ‘你好’
如果函数中有大量参数,而我们又不希望每次调用函数时都要输入每个参数,那么这种方法就非常有用。
2)形参和实参在我学习 Python 的最初一年,我以为它们的意思是一样的。
但也不尽然。有一点区别。
比方说,我们有一个简单的函数,它接收 (a, b) 并返回它们的平均值。
def add(a, b):
return a+b
形参是我们定义函数时写在括号内的变量。这里,a 和 b 就是形参。
def add(a, b):
return a+b
x = add(3 ...
通用横轴墨卡托(UTM)是一种地图投影方法,它提供了一种为地球上的位置指定坐标的方式。像传统的经纬度系统一样,UTM也是一种水平位置表示法,这意味着它忽略了高度信息,而将地球表面视为一个理想的椭球体。然而,UTM与经纬度系统的主要区别在于,它将地球分割为60个区域,并将每个区域投影到一个平面上,作为坐标的基础。在这个系统中,位置的指定需要明确其所在的UTM区域以及在该区域内的x和y坐标。从椭球体到UTM区域的投影基于横向墨卡托投影的一系列参数,这些参数可能会因国家、地区或地图系统的不同而有所差异。
UTM系统将地球划分为60个区域,每个区域的经度跨度为6°。第一区覆盖了从西经180°到174°的地区,然后区域编号向东递增,直到第60区,覆盖东经174°到180°的地区。值得注意的是,南纬80°以南和北纬84°以北的极地区域并未纳入这个系统中。
随着接近UTM区域的边界,尺度的失真会逐渐增大。然而,在实际操作中,我们常常需要在两个相邻的区域内对一系列位置进行测量,这时使用单一的网格进行测量就显得尤为方便和必要。在大比例尺地图(如1:100,000或更大)的边界区域,制图者通常会在距离区 ...
一般获取高度数据的方法很简单。打开对应的DEM文件,按照经纬度来查询对应DEM文件的行列号,按照行列号读取DEM数据(即高度)。
以上方法是通用的获取高度的流程。
现在有这样的一个场景,我们需要查询多个地点高度。如果这些点都集中在小范围区域的话,那么我们需要下载的DEM文件大小就小。与此相反,如果这些点分布范围很大,这时候我们需要下载的DEM就非常巨大。
那有没有一种方法:不需要下载DEM直接得到对应经纬度的海拔数据呢?
答案是有的。
USGS 国家地图有一个 REST 服务,可用于查询纬度/经度坐标的海拔。
服务网址: https://apps.nationalmap.gov/epqs/
打开网址如下图所示
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/4/15 14:24
# @File : elevation.py
from typing import List
import requests
import urllib
import pandas as pd
def get_elevati ...
本文将介绍一种 Python 实现,该实现不借助numpy读取tif文件。
平常使用gdal和numpy就可以轻松实现读写tif文件。
假设,在不使用numpy情况下,如何去读取tif的信息呢?
首先,介绍一下什么是gdal和numpy。
gdal是什么GDAL(Geospatial Data Abstraction Library,地理空间数据抽象库)是一个开源的库,用于读取和写入栅格地理空间数据格式,它提供了一种统一的数据模型来处理这些格式的数据。GDAL支持40多种主流的栅格数据格式,包括GeoTIFF、JPEG、PNG等。
GDAL还提供了一系列的命令行工具来进行地理空间数据转换和处理。例如,gdal_translate可以用来转换栅格数据格式,gdalwarp可以用来重投影和裁剪栅格数据,gdalinfo可以用来查看栅格数据的元数据信息等。
除了栅格数据处理,GDAL的子项目OGR提供了对矢量地理空间数据格式的支持,包括ESRI Shapefiles、GeoJSON、KML等。
行业内的大型软件,如google earth、arcgis的底层都借用了大量的gdal的代码。
总 ...
本文将介绍一种 Python 实现,该实现可以在 WGS-84,GCJ-02(火星坐标系),以及 BD-09(百度坐标系)之间进行坐标转换。
坐标系简介
WGS-84 即地球坐标系,国际上通用的坐标系(设备一般包含GPS或者北斗芯片获取的经纬度为WGS84坐标–谷歌地图获取的是WGS84坐标(但是中国除外))
GCJ-02坐标系 ,即火星坐标系,有中国国家测绘局制定的地理信息系统的系统坐标。由WGS84坐标系经过加密后实现的;
BD-09坐标系 ,即百度坐标系,由GCJ-02坐标系经过加密后的坐标系
坐标系统转换情况
高德地图提供了WGS转火星坐标系的方法;
百度地图提供了WGS转百度地图的方法;
微信获取地理位置默认WGS可选择为火星坐标
同一个地点不同坐标系下的坐标
谷歌地图:39.9821199343,116.3263878498
百度地图:39.9878838520,116.3330148177
腾讯高德:39.9821328830,116.3264038577
图吧地图:39.9813033330,116.3156777777
谷歌地球:39.980833333 ...







