使用 Python 从点生成矩形

2023-11-24

我有一个充满点的文本文件。它们在每行上由逗号限制的 (x,y) 对分隔。例如。

-43.1234,40.1234\n
-43.1244,40.1244\n
etc.

我现在需要围绕这些点中的每一个创建一个多边形。该多边形必须有距该点 15 公里的缓冲区。我无法访问 ArcGIS 或任何其他为我提供此功能的 GIS,因此此时,我想知道是否有人拥有可以帮助我入门的数学知识?


你想使用GDAL/OGR/OSR,它可以进行投影、缓冲,甚至可以为您编写 Shapefile。

为了将纬度/经度转换为公制缓冲区的米,您需要一个投影坐标系。在下面的示例中,我使用动态加载和缓存的 UTM 区域。这将计算出大地水准面上的 15 公里。

此外,我还计算 GIS 缓冲区(这是一个圆形多边形)和计算缓冲区中的包络线(这是您要寻找的矩形)。

from osgeo import ogr, osr

# EPSG:4326 : WGS84 lat/lon : http://spatialreference.org/ref/epsg/4326/
wgs = osr.SpatialReference()
wgs.ImportFromEPSG(4326)    
coord_trans_cache = {}
def utm_zone(lat, lon):
    """Args for osr.SpatialReference.SetUTM(int zone, int north = 1)"""
    return int(round(((float(lon) - 180)%360)/6)), int(lat > 0)

# Your data from a text file, i.e., fp.readlines()
lines = ['-43.1234,40.1234\n', '-43.1244,40.1244\n']
for ft, line in enumerate(lines):
    print("### Feature " + str(ft) + " ###")
    lat, lon = [float(x) for x in line.split(',')]
    # Get projections sorted out for that UTM zone
    cur_utm_zone = utm_zone(lat, lon)
    if cur_utm_zone in coord_trans_cache:
        wgs2utm, utm2wgs = coord_trans_cache[cur_utm_zone]
    else: # define new UTM Zone
        utm = osr.SpatialReference()
        utm.SetUTM(*cur_utm_zone)
        # Define spatial transformations to/from UTM and lat/lon
        wgs2utm = osr.CoordinateTransformation(wgs, utm)
        utm2wgs = osr.CoordinateTransformation(utm, wgs)
        coord_trans_cache[cur_utm_zone] = wgs2utm, utm2wgs
    # Create 2D point
    pt = ogr.Geometry(ogr.wkbPoint)
    pt.SetPoint_2D(0, lon, lat) # X, Y; in that order!
    orig_wkt = pt.ExportToWkt()
    # Project to UTM
    res = pt.Transform(wgs2utm)
    if res != 0:
        print("spatial transform failed with code " + str(res))
    print(orig_wkt + " -> " + pt.ExportToWkt())
    # Compute a 15 km buffer
    buff = pt.Buffer(15000)
    print("Area: " + str(buff.GetArea()/1e6) + " km^2")
    # Transform UTM buffer back to lat/long
    res = buff.Transform(utm2wgs)
    if res != 0:
        print("spatial transform failed with code " + str(res))
    print("Envelope: " + str(buff.GetEnvelope()))
    # print("WKT: " + buff.ExportToWkt())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Python 从点生成矩形 的相关文章

  • 如何在 PyCharm 中“查看”/突出显示制表符和空格以检查缩进?

    这可能听起来很愚蠢 但我还是个新手 有没有明确的方法可以发现 PyCharm 中的制表符或空格位于错误的位置 或者甚至以可视方式显示所有制表符和空格 我只是花了很长时间在函数的 Def 行寻找 无效语法 错误的问题 我原以为这可能仍然是一些
  • 在 while 循环中更改 tkinter 画布中的图像

    我的完整代码是here https gist github com ItsBerry de245ba70376cb07f4dbe2d25c223f5f 我正在尝试使用 tkinter 的画布创建一个小游戏 让人们练习学习高音谱号上的音符 最
  • Pandas:根据其他多级列对最里面的列进行分组排序

    考虑下面的 df In 3771 df pd DataFrame A a 11 B b 11 C C1 C1 C2 C1 C3 C3 C2 C3 C3 C2 C2 D D1 D2 D1 D3 D3 D2 D4 D4 D1 D2 D3 E v
  • 如果新文件不存在则写入新文件,如果存在则追加到文件

    我有一个程序可以写入用户的highscore到一个文本文件 该文件由用户选择时命名playername 如果具有该特定用户名的文件已经存在 那么程序应该附加到该文件 以便您可以看到多个highscore 如果具有该用户名的文件不存在 例如
  • 如何在 django 表单中设置自定义 HTML 属性?

    我有一个 Django 表单 它是页面的一部分 假设我有一个字段 search input forms CharField u Search word required False 我只能通过模板访问它 form search input
  • django/whitenoise 存储后端导致错误

    我在调试关闭时在 heroku 上运行 django 应用程序时遇到了 500 错误 使用 rollbar 了解发生错误的原因后 它报告了以下内容 ValueError The file media img 1 jpg could not
  • 在OpenCV Python中编写4通道以上图像

    这对我来说是一个持续的挑战 我正在尝试使用 openCV 将两个 3 RGB 图像组合成一个 6 通道 TIFF 图像 到目前为止我的代码如下 import cv2 import numpy as np im1 cv2 imread im1
  • 类型错误:无法连接“str”和“instance”对象(python urllib)

    写一个python程序 我在使用时遇到了这个错误urllib urlopen功能 Traceback most recent call last File ChurchScraper py line 58 in
  • 如何让MagicMock返回多个值

    我想模拟一个图书馆 matplotlib对于它的价值 并且遇到一个问题 当调用模拟并期望返回元组时 它会失败 有一个更好的方法吗 Python 3 7 2 default Jan 13 2019 12 50 15 Clang 10 0 0
  • 如何在Python模拟中调用模拟方法

    我想创建一个模拟方法来调用被模拟的底层方法 我正在想象类似以下的内容 但我找不到任何有关模拟对象的文档 该对象包含对被模拟对象的引用 我将其表示为 wrapped method foo below from mock import patc
  • Python:选择多个已安装模块版本之一

    在我的系统上 我多次安装了多个模块 举个例子 numpy 1 6 1安装在标准路径中 usr lib python2 7 dist packages 我有一个更新版本numpy 1 8 0安装于 local python lib pytho
  • 在 PyQt 中使用 Windows 7 任务栏功能

    我正在寻找有关将一些新的 Windows 7 任务栏功能集成到我的 PyQt 应用程序中的信息 具体来说 如果已经存在使用新进度指示器的可能性 see here http www petri co il wp content uploads
  • Anaconda (Python) - Windows 10 上的 Cmder 集成

    我在 Windows 10 64 位上通过 Anaconda 让 Cmder 使用 Python 时遇到了一些麻烦 我让 Anaconda 工作得很好 测试过用 matplotlib 绘制一些东西 它与 Anaconda Prompt 一起
  • 使用 pyinstaller 制作的可执行文件出现运行时错误

    所以我使用 Pygame 制作了一个游戏 现在我想用它制作一个可执行文件 首选独立可执行文件 所以我用它来制作可执行文件 pyinstaller onefile main py 编译顺利 但运行时出现错误 这是错误 Traceback mo
  • 带参数的 Python 列表过滤

    python中有没有一种方法可以在列表上调用过滤器 其中过滤函数在调用期间绑定了许多参数 例如有没有办法做这样的事情 gt gt def foo a b c return a lt b and b lt c gt gt myList 1 2
  • python 中的优化标准化

    在优化过程中 对输入参数进行归一化 使它们处于同一数量级 通常会很有帮助 这样收敛效果会更好 例如 如果我们想要最小化 f x 而合理的近似值是 x0 1e3 1e 4 则将 x0 0 和 x0 1 归一化到大约相同的数量级可能会有所帮助
  • 纯Python库读写jpeg格式

    伙计们 我正在寻找 jpeg 写入 阅读会很好 但不是必需的 库的纯 python 实现 我只在以下位置创建了 TonyJPEG 库端口 http mail python org pipermail image sig 2004 Novem
  • 带有 graphviz_layout 的水平树

    在Python中 使用networkx 我可以用以下方法绘制垂直树 g nx balanced tree 2 4 pos nx graphviz layout g prog dot nx draw g pos labels b all no
  • 从 s3 获取 ogg 轨道的长度而不下载整个文件

    如何在不下载整个文件的情况下获取 ogg 文件的播放长度 我知道这是可能的 因为 HTML5 标签和 VLC 都可以在加载 URL 后立即显示整个播放长度 而无需下载整个文件 有标题或我可以阅读的内容吗 也许甚至是比特率 我可以将其除以文件
  • pylint:忽略 rcfile 中的多个

    在我的 django 项目中 我使用的是外部编写的应用程序 但编写得很糟糕 现在我想从我的 pylint 报告中忽略这个应用程序 但是我无法让 pylint 忽略它 Pylint 已经忽略了南方的迁移 如下所示 MASTER ignore

随机推荐

  • Zend Form SetAction 使用命名路由

    我有一个表格 我正在尝试为其设置操作 我想使用我在引导程序中创建的路由在表单文件 扩展 Zend Form 中而不是在控制器或视图中声明操作 通常当我想使用路线时我会做类似的事情 this gt url array route name 在
  • Spring @QuerydslPredicate 问题

    使用的库 Spring Boot 1 3 2 RELEASE 查询DSL 3 7 2 QueryDSL Maven 插件 1 1 3 休眠 4 3 11 Final Issue 目前 我有一个 Spring Boot 应用程序 它具有使用
  • 在 Android 地图中的 geo:-url 处显示标记

    Android 上的 Google 地图是否不仅可以在地图应用程序中显示给定坐标 还可以在该位置设置标记 或图钉 我阅读了文档https developer android com guide appendix g app intents
  • 客户端文件创建和下载

    我们正在使用 fusioncharts 它能够在客户端使用 javascript 导出 csv 数据 我们希望能够获取该数据并在浏览器中动态创建文件 那可能吗 如何 尝试下面的代码允许您访问客户端文件系统 但这仅适用于 IE 浏览器
  • NetBeans 中 Java EE 项目中的默认 index.jsp 文件在哪里?

    我在 NetBeans 中创建一个简单的 Web 应用程序 名为 WebApplication1 已创建一个文件 名为index jsp 当我运行应用程序时 浏览器会转到index jsp 项目中没有任何地方将其称为欢迎页面 那么那里进展如
  • ios uitableview 在滚动时淡入底部单元格和顶部单元格

    当我的 uitableview 的单元格滚动到视图之外时 我会淡出它们 或者当它们滚动到视图中时 我会淡入它们 我面临的问题是 如果我滚动得非常快 有时完全可见的单元格会保持灰色 下面是我的代码 void scrollViewDidScro
  • Starteam 到 X 的迁移? (其中 X 是以下之一:svn/git/hg/bzr ...)

    是否有工具可以将 Starteam 迁移到 svn 或 git 或任何其他现代 体面的源控制系统 我正在考虑一些类似的事情git svn作品 允许您使用 git 从 svn 存储库中拉取 可以导入 StarTeam 存储库并将其转换为 sv
  • 使用 oledb 命令从 Excel 中读取数据

    在下面的代码中 而不是指定选项卡名称 我们是否可以只说 select from tab1 选项卡名称可能是什么 OleDbCommand excelOledbCommand new OleDbCommand Select From Shee
  • 使用引用参数嵌套调用 consteval 函数

    下面的程序 template
  • 通过命令行进行文件夹比较

    我想比较 Windows Vista XP 上的两个文件夹 其中有大量大文件 我需要比较它们 如果我使用Beyond Compare或者类似的工具来比较文件夹 如果我手动进行的话会花费很多时间 我需要将该文件夹比较添加到批处理文件中 那么在
  • 如何估计 GIF 文件大小?

    我们正在建立在线视频编辑服务 其中一项功能允许用户将视频中的一小段导出为动画 gif 伊姆古尔有一个文件大小限制每个上传的 gif 动画大小为 2Mb Gif 文件大小取决于帧数 颜色深度和图像内容本身 纯色的平面颜色会产生非常轻量级的 g
  • 如何通过控制台启用/禁用 google chrome 扩展

    今天 在打开 Google Chrome 时 我意识到没有简单的方法可以在不前往以下位置之一的情况下启用或禁用扩展 chrome 扩展 单击工具 gt 扩展 gt 启用 禁用 这之所以如此重要 是因为它占用的资源 例如 我将启动我的计算机
  • 通过ID动态获取drawable

    我想要一个byte并将其附加到资源 ID 中 以便能够获取与游戏中编号的牌组相对应的图像 使用其他设备上的路径很容易 但是使用资源 ID 我不确定如何才能做到这一点 这是我现在所拥有的 switch GameSettings gameDec
  • 漏洞? System.ArgumentException:“无法找出以下路径:

    Error System ArgumentException 无法找出以下路径 RegisterPage参数名称 uri System ArgumentException unable 找出路线 LogoPage 参数名称 uri 怎么了
  • 从带有 cookie 的 Chrome 扩展程序发送 XHR 请求

    我正在尝试将 XHR 请求从 Google Chrome 扩展程序发送到另一个域 这可以正常工作 但我需要随请求发送该域 cookie 有办法做到这一点吗 确保manifest json 权限 are 正确设置 您必须在中正确设置跨站域请求
  • 如何在 PowerShell 上转义命令行参数?

    看来我可以使用单引号或双引号转义命令行参数 PS C gt echo Hello World Hello World PS C gt echo Hello World Hello World PS C gt echo Hello World
  • Keras ImageDataGenerator 用于多个输入和基于图像的目标输出

    我有一个模型 它以两个图像作为输入并生成单个图像作为目标输出 我的所有训练图像数据都位于以下子文件夹中 input1 input2 target 我可以使用ImageDataGenerator类和方法如flow from directory
  • UIKit 绘图是线程安全的:如何获取图形上下文?

    所以 正如中提到的这个答案 and in iOS 4 0 发行说明 UIKit 现在有一些线程安全的绘图工具 在 UIKit 中绘制图形上下文现在是线程安全的 具体来说 用于访问和操作图形上下文的例程现在可以正确处理驻留在不同线程上的上下文
  • 使用 jQuery 修剪文本区域中的前导/尾随空白?

    以下代码是将文本从数据库放入文本区域的示例
  • 使用 Python 从点生成矩形

    我有一个充满点的文本文件 它们在每行上由逗号限制的 x y 对分隔 例如 43 1234 40 1234 n 43 1244 40 1244 n etc 我现在需要围绕这些点中的每一个创建一个多边形 该多边形必须有距该点 15 公里的缓冲区