当前位置: 首页 > 知识库问答 >
问题:

重新投影GeoDataframe未正确转换几何体

刘弘济
2023-03-14

我正在使用Geopandas通过读取一个已投影到EPSG:3735(俄亥俄州平面南部,美国英尺)的形状文件(.shp)来创建一个geodataframe。现在我想把另一个geodataframe连接到这个。第二个geodataframe是通过读取包含lon,lat格式的x,y坐标的.csv文件创建的。因此,我将第二个地理数据框的crs定义为EPSG:4326(WGS 1984)。要使用空间连接函数,两个geodataframe的crs必须相同,因此我尝试使用To_crs将第一个geodatafame重新投影到EPSG:4326。在重新投影之前,Geodataframe gdf如下所示:

如果我写:

gdf_proj = gdf.to_crs("EPSG:4326")

结果是这样的:

我还尝试将第二个gdf从EPSG:4326转换为EPSG:3735,但第二个gdf中的点几何体也将成为点(inf,inf)。我不确定这里出了什么问题。有人能推荐一种在geodataframe中重新投影多边形的好方法吗?

我刚试过其他的crs。其中一些会起作用(不会变成无穷大),比如37853035。我也试过其他一些国家飞机的电脑,但其中一些工作,而另一些没有。俄亥俄州南部(3735)和北部(3734)不工作。印第安纳州东部(2965)不起作用,但西部(2966)起作用。此外,NAD83地面军事系统(4269)的项目不起作用。

共有2个答案

呼延晋
2023-03-14

我想我已经明白了。不应使用WGS 1984(4326)初始化.csv文件中的第二个gdf,而应将其设置为NAD 1983(4269)。两个地面军事系统都使用lat和long,所以我想从一个转换到另一个会带来一些麻烦。然后,我可以使用to_crsgdfEPSG:4269转换为EPSG:3735,因为3735是使用NAD83的PC。因此,我想当使用Geopandas中的其他地面军事系统将数据从一个地面军事系统直接投影到另一台计算机时,可能会引起一些麻烦。我没有检查源代码,但为了避免类似的问题,我想说,如果目标crs位于另一个地面军事系统中,在尝试使用投射到\u crs时要小心。

商皓
2023-03-14

您可以检查gdf是否设置了正确的坐标系。您可以使用gdf.crs实现这一点。如果不是EPSG:3735,而是其他东西,这可能会导致你看到的无穷大。

如果这是错误的,调查原因可能是有意义的。但在任何情况下,您都可以使用set\u crs覆盖错误的值:

gdf = gdf.set_crs("EPSG:3735")
gdf_proj = gdf.to_crs("EPSG:4326")
 类似资料:
  • 我想在图像空间中把3D点转换成2D点。根据hartley和zisserman的《多视图几何学》一书,我们用DLT计算摄像机射影矩阵只需要6个点,我做到了。有了矩阵,我能够准确地重新投影点。 虽然投影矩阵工作正常,但从投影矩阵中提取的固有参数却不正常,每次都相差很小mm。 下面是我能够提取的内在参数的示例 谢谢你。

  • 我正在使用sharpmap将MSSQL中的边界(几何体)渲染为PNG图像。这一切都很好,除了国家在平面图像格式上看起来太“宽”。 据我所知,我需要创建到EPSG:3857投影的转换,但我不知道如何做。 这是我的密码 WKT可以在这里找到https://pastebin.com/PEbpAdxT 感谢您的帮助。 编辑2 我也尝试了以下转换,但这会呈现空白的png(没有红色的十字线)

  • 我制作了一个简单的OpenGL程序,在屏幕上绘制2D纹理。当你调整窗口大小时,它不能正确调整,所以要修复这个问题,我只需要再次运行投影矩阵代码: 但是,运行这段代码会扭曲图像。根据我的理解,为了使我能在屏幕上画出类似2D的效果,我的纹理是用正投影矩阵绘制的,这意味着有一个平面与窗口或类似我所画的东西“平行”。当我试图重新调整它以适应新的窗口大小时,它无法正确调整。这段代码出了什么问题?

  • 举个简单的例子来说明正交投影与透视投影照相机的区别。使用透视投影照相机获得的结果是类似人眼在真实世界中看到的有“近大远小”的效果(如下图中的(a));而使用正交投影照相机获得的结果就像我们在数学几何学课上老师教我们画的效果,对于在三维空间内平行的线,投影到二维空间中也一定是平行的(如下图中的(b))。 (a)透视投影,(b)正交投影 那么,你的程序需要正交投影还是透视投影的照相机呢? 一般说来,对

  • 有很多关于3D的opengl投影矩阵的很棒的教程,但我不是在做3D。我真的很难根据自己的喜好进行正交投影设置。 int宽=320;int高=480; 我使用这些设置创建了一个视图投影矩阵。 创建此视图和投影矩阵并将它们传递给gpu之后。 然后我创建一个从的四边形,以便它的原点位于中心。 然后我为四边形制作一个比例矩阵,这样我就可以在屏幕上看到它了。它呈现为一个完美的正方形,但当然glViewpor

  • 在使用Python geopandas、cartopy和matplotlib以正确绘制shapefile数据时,我面临着严重的困难。 问题来自于在正确设置转换和投影对象的shapefile数据的困难。 我在这里描述的示例是相对于SIRGAS 2000投影中的SHP而言的,其WKT格式为: GEOGCS[“SIRGAS 2000”,基准[“D_SIRGAS_2000”,球体[“GRS_1980”,6