转换 osmnx 投影地图的经纬度坐标

2023-11-23

我想从 osmnx 获取距离经纬度对最近的节点。

下载 osmnx 图形对象后,我想对其进行投影,以便我可以按照文档中的说明从道路网络中删除死胡同。

我知道我投影了图表以及需要投影的纬度、经度值,但我实际上不明白以哪种方式。

例如,我在我的项目中将 lat long 转换为 x y z,但我怎么知道这与该图所做的投影兼容。欧几里得方法似乎没有帮助。

另外,标志 build_graph=True 是否会撤消投影并返回未投影的图形对象?如果是这样,经纬度数据就不会那么接近来解释返回的同一节点。

long = [20.83099222975307, 20.83099222975307, 20.831071057075036, 20.831507821410554, 20.831536549206216, 20.831590645309163, 20.831760926274246, 20.831829734056857, 20.832064826897437, 20.83211892318422, 20.832291232174775, 20.832453521327647, 20.832467537620413, 20.832744680362744, 20.83275203624094, 20.832893649116148, 20.832933033903316, 20.83298713048916, 20.833011166881615, 20.833109340046658, 20.83317212468842, 20.83317212468842, 20.83319216485246, 20.833193496936566, 20.833256281615377, 20.833335746832073, 20.833345766925337, 20.83338451522313, 20.83367104311693, 20.83367104311693, 20.83378456515314, 20.833896118665407, 20.833897450746417, 20.83400095279438, 20.83400095279438, 20.834029044642254, 20.83411517063695, 20.83413121469866, 20.834177955710697, 20.8341879758658, 20.83424074081229, 20.83424074081229, 20.83424074081229, 20.83424809681322, 20.834270801294185, 20.834296169936398, 20.834302193862516, 20.834302193862516, 20.83430485802092, 20.83430485802092, 20.83441438425335, 20.834493213575563, 20.834498541888962, 20.83452391055964, 20.834525938270623, 20.83458669580759, 20.83459405183661, 20.83459405183661, 20.834608068255694, 20.834616756364248, 20.83467288126638, 20.834695585806365, 20.834695585806365, 20.834742326972062, 20.83503887769283, 20.835118343769174, 20.83514840444336, 20.83576757270048, 20.836452193850544, 20.83755761485359, 20.83759706037195, 20.837852203156956, 20.83795570768881, 20.838343145143025, 20.838343145143025, 20.839993748127704, 20.84092763462079, 20.84092763462079, 20.84092763462079, 20.84092763462079, 20.84127702640877, 20.84127702640877, 20.84127702640877, 20.841985137270154, 20.843422866598996, 20.84377429407861, 20.84377429407861, 20.84377429407861, 20.84377429407861, 20.84377429407861, 20.84377429407861, 20.84377429407861, 20.84377429407861, 20.84377429407861, 20.84402151726155, 20.84402151726155, 20.84548742851209, 20.84548742851209, 20.85188606916644, 20.85501616058255, 20.856737430326934, 20.859542430698603, 20.8613760173422, 20.86163714950174, 20.863028413707386, 20.863180155858238, 20.863345567971184, 20.863412802449744, 20.863424615681698, 20.863451670631083, 20.863495295022673, 20.86349756245783, 20.86346547505983, 20.86346547505983, 20.86346547505983, 20.863419542480333, 20.863411941442653, 20.86332960137235, 20.862958153765447, 20.86259449784883, 20.862368831055996, 20.862368831055996, 20.86213427281035, 20.86212634419993, 20.86188638794884, 20.861807035358805, 20.861375561408494, 20.860967669982454, 20.858716012450735, 20.858716012450735, 20.858706051455755, 20.85862909256079, 20.85859787704128, 20.85611899992582, 20.85611899992582, 20.853380676295366, 20.84616157108611, 20.845523814987697, 20.844864025170992, 20.842355069052047, 20.841927997139937, 20.841920696524085, 20.83342199581793, 20.829528649520768, 20.824360163540142, 20.82338364296999, 20.82231856837287]

lat = [39.62319155463754, 39.62319155463754, 39.62320295662305, 39.6232970230751, 39.62329987357564, 39.623311275578985, 39.623345481600296, 39.6233625846173, 39.6234110431884, 39.62341959470448, 39.623456651286325, 39.6234908573795, 39.623496558396674, 39.623553568594225, 39.623553568594225, 39.623584924222904, 39.62359347576046, 39.62360202729907, 39.62361057883875, 39.62362768192127, 39.62364193449326, 39.62364193449326, 39.62364763552287, 39.62364763552287, 39.62365903758352, 39.62367614067801, 39.62368184171045, 39.623687542743355, 39.62374740361722, 39.62374740361722, 39.62377590881346, 39.62379586245781, 39.62379586245781, 39.623824367674004, 39.623824367674004, 39.623827218196276, 39.62384432133233, 39.623850022378626, 39.623858573948944, 39.62386427499641, 39.62387282656849, 39.62387282656849, 39.62387282656849, 39.62387567709275, 39.62388137814163, 39.62388422866624, 39.62388422866624, 39.62388422866624, 39.62388422866624, 39.62388422866624, 39.623912733918836, 39.623929837076034, 39.623929837076034, 39.62393553812936, 39.62393553812936, 39.623946940237445, 39.62395264129219, 39.62395264129219, 39.62395549181974, 39.62395549181974, 39.62396974445926, 39.62397544551588, 39.62397544551588, 39.6239839971017, 39.62404955929475, 39.62406666248575, 39.62407236355037, 39.62421203978002, 39.624368819557304, 39.62462821960523, 39.62463962182745, 39.624696632966725, 39.62472228799472, 39.624816356512106, 39.624816356512106, 39.62522398823179, 39.62546628794432, 39.62546628794432, 39.62546628794432, 39.62546628794432, 39.62556035747312, 39.62556035747312, 39.62556035747312, 39.62574564631297, 39.626144731653206, 39.62624450334792, 39.62624450334792, 39.62624450334792, 39.62624450334792, 39.62624450334792, 39.62624450334792, 39.62624450334792, 39.62624450334792, 39.62624450334792, 39.62631576893222, 39.62631576893222, 39.626754766550185, 39.626754766550185, 39.62903531847423, 39.63050061275056, 39.631469890610106, 39.63349401463708, 39.63539845582614, 39.63574057656538, 39.638423432026336, 39.63893378506902, 39.63967223552374, 39.640079954790295, 39.640191151371056, 39.64042494989323, 39.64123469722554, 39.64159395436001, 39.64219557167739, 39.64219557167739, 39.64219557167739, 39.642680290858735, 39.64276297858772, 39.643316133524635, 39.64490719146398, 39.64600213432235, 39.64658953268899, 39.64658953268899, 39.64713986675438, 39.64715697565563, 39.64768735369431, 39.64785559273931, 39.648711051843534, 39.64946101303195, 39.652951433740164, 39.652951433740164, 39.65296284063269, 39.65307120620556, 39.65311398213635, 39.656285178192974, 39.656285178192974, 39.65940518392453, 39.66665246841233, 39.66725430386289, 39.66786755390862, 39.67016657695176, 39.67055165652977, 39.670560213878105, 39.678005508599924, 39.68132905057261, 39.6857112353726, 39.686538632203565, 39.68744878016951]

bounding_box = (20.814945, 20.876184, 39.612716999999996, 39.685287)


# Defining the map boundaries
west, east, north, south = bounding_box[0], bounding_box[1], bounding_box[2], bounding_box[3]

# Downloading the map as a graph object
g = ox.graph_from_bbox(north,
               south,
               east,
               west,
               network_type='all', clean_periphery=True)

G_proj = ox.project_graph(g)

g = ox.consolidate_intersections(G_proj,
                         rebuild_graph=True,
                         tolerance=20,
                         dead_ends=False)
route = []

for i in range(len(lat)):

    point = (lat[i], long[i])
    node = ox.get_nearest_node(g, point)
    print(node)
    route.append(node)

print(route)

我知道我投影了图表以及需要投影的纬度、经度值,但我实际上不明白以哪种方式。

只需将您的点投影到与图表相同的 CRS 即可。每the docs,OSMnx 将您的图形投影到本地 UTM 区域投影,除非您指定不同的 CRS。只需使用投影图的 CRS 属性将您的纬度/经度点投影到相同的点,然后进行欧几里德最近节点搜索。

这是一个带注释的最小可重现示例:

import geopandas as gpd
import osmnx as ox
from shapely.geometry import Point
ox.config(use_cache=True, log_console=True)

# create graph, project it, then consolidate intersections
bbox = (39.612717, 39.685287, 20.876184, 20.814945)
G = ox.graph_from_bbox(*bbox, network_type='all')
Gp = ox.project_graph(G)
Gc = ox.consolidate_intersections(Gp, rebuild_graph=True, tolerance=20, dead_ends=False)

# turn lat/lng lists into list of shapely points
lats = [39.6654413, 39.6456468, 39.6175496]
lngs = [20.8586396, 20.8496936, 20.8437053]
points_list = [Point((lng, lat)) for lat, lng in zip(lats, lngs)]

# then turn list into GeoSeries with original CRS set
# i'm just guessing that your original CRS is 4326
points = gpd.GeoSeries(points_list, crs='epsg:4326')

# then project your points to the same CRS as your projected graph
points_proj = points.to_crs(Gp.graph['crs'])

# find nearest node in projected graph to each projected point
method = 'euclidean'
nearest_nodes = [ox.get_nearest_node(Gc, (pt.y, pt.x), method) for pt in points_proj]
print(nearest_nodes) # prints [1334, 777, 37]

另外,标志 build_graph=True 是否会撤消投影并返回未投影的图形对象?

No.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

转换 osmnx 投影地图的经纬度坐标 的相关文章

  • 如何更改 FacetGrid 中的边距标题颜色

    使用 Seaborn Facet Grids 如何仅更改边距标题的颜色 注意g set titles color red 更改两个标题 p sns load dataset penguins sns displot data p x fli
  • 从 Django 调用 Postgres SQL 存储过程

    我正在开发一个带有 Postgresql 数据库的 Django 项目 我编写了一个可以在 Postgres 上完美运行的存储过程 现在我想从 Django 1 5 调用该存储过程 我已经编写了代码 但它提示错误 CREATE FUNCTI
  • 检测到通过 ChromeDriver 启动的 Chrome 浏览器

    我正在尝试在 python 中使用 selenium chromedriver 来访问 www mouser co uk 网站 然而 从第一次拍摄开始 它就被检测为机器人 有人对此有解释吗 此后我使用的代码 options Options
  • 如何在 Jupyter Notebook 中运行 Python 异步代码?

    我有一些 asyncio 代码在 Python 解释器 CPython 3 6 2 中运行良好 我现在想在具有 IPython 内核的 Jupyter 笔记本中运行它 我可以运行它 import asyncio asyncio get ev
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • Pyqt-如何因另一个组合框数据而更改组合框数据?

    我有一个表 有 4 列 这 4 列中的两列是关于功能的 一个是特征 另一个是子特征 在每一列中 所有单元格都有组合框 我可以在这些单元格中打开txt 我想 当我选择电影院作为功能时 我只想看到子功能组合框中的电影名称 而不是我的 数据 中的
  • ImportError:运行 jupyter Notebook 时没有名为 IPython.paths 的模块?

    我通过以下方式安装了 jupyter usr local opt python bin python2 7 m pip install jupyter 这将安装 ipython 版本 4 1 2 但是 当我运行 jupyter Notebo
  • 小部件之间的自定义信号

    尝试将信号从一个 gtk EventBox 子级发送到另一个 在 init HeadMode 第 75 行 上出现错误 类型错误 未知信号名称 消息发送 why usr bin env python coding utf8 import p
  • 如何使用 javascript/jquery/AJAX 调用 Django REST API?

    我想使用 Javascript jQuery AJAX 在前端调用 Django Rest API 请求方法是 POST 但当我看到 API 调用它的调用 OPTIONS 方法时 所以 我开始了解access control allow o
  • Pandas:如何将数据框插入 Clickhouse

    我正在尝试将 Pandas 数据框插入 Clickhouse 这是我的代码 import pandas import sqlalchemy as sa uri clickhouse default localhost default ch
  • 在相同任务上,Keras 比 TensorFlow 慢

    我正在使用 Python 运行斩首 DCNN 本例中为 Inception V3 来获取图像特征 我使用的是 Anaconda Py3 6 和 Windows7 使用 TensorFlow 时 我将会话保存在变量中 感谢 jdehesa 并
  • 揭秘sharedctypes性能

    在 python 中 可以在多个进程之间共享 ctypes 对象 然而我注意到分配这些对象似乎非常昂贵 考虑以下代码 from multiprocessing import sharedctypes as sct import ctypes
  • 如何使用 Bokeh 动态隐藏字形和图例项

    我正在尝试在散景中实现复选框 其中每个复选框应显示 隐藏与其关联的行 我知道可以通过图例来实现这一点 但我希望这种效果同时在两个图中发生 此外 图例也应该更新 在下面的示例中 出现了复选框 但不执行任何操作 我显然不明白如何更新用作源的数据
  • 如何在 Django 中使用基于类的视图创建注册视图?

    当我开始使用 Django 时 我几乎使用 FBV 基于函数的视图 来处理所有事情 包括注册新用户 但当我更深入地研究项目时 我意识到基于类的视图通常更适合大型项目 因为它们更干净且可维护 但这并不是说 FBV 不是 无论如何 我将整个项目
  • GradientTape 根据损失函数是否被 tf.function 修饰给出不同的梯度

    我发现计算的梯度取决于 tf function 装饰器的相互作用 如下所示 首先 我为二元分类创建一些合成数据 tf random set seed 42 np random seed 42 x tf random normal 2 1 y
  • 使用 Conda 更新特定模块会删除大量软件包

    我最近开始使用 Anaconda Python 发行版 因为它提供了许多开箱即用的数据分析库 使用 conda 创建环境和安装软件包也轻而易举 但是当我想更新 Python 本身或任何其他模块时 我遇到了一些严重的问题 我事先被告知我的很多
  • 使用 NLP 进行地址分割

    我目前正在开发一个项目 该项目应识别地址的每个部分 例如来自 str Jack London 121 Corvallis ARAD ap 1603 973130 输出应如下所示 street name Jack London no 121
  • falcon,AttributeError:“API”对象没有属性“create”

    我正在尝试测试我的猎鹰路线 但测试总是失败 而且看起来我把所有事情都做对了 my app py import falcon from resources static import StaticResource api falcon API
  • Python对象初始化性能

    我只是做了一些快速的性能测试 我注意到一般情况下初始化列表比显式初始化列表慢大约四到六倍 这些可能是错误的术语 我不确定这里的行话 例如 gt gt gt import timeit gt gt gt print timeit timeit
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor

随机推荐

  • 创建 NULL 数据库表最佳实践

    不确定处理问题的最佳实践是什么NULL当我有一个表时的值 其中两个字段有时只填充创建很多NULL行中的值 是否应该将这两个字段移动到一个单独的表中 创建两个没有任何字段的表NULL values 这两个表之间的联接只会返回一个与我的原始表相
  • 如何在android中运行openCV相关应用程序,而不使用OpenCV管理器

    在我的 Android 应用程序中 我使用 OpenCV 库的静态加载 IE OpenCVLoader initDebug 在模拟器上运行时它将返回 true 但是返回错误在 移动 设备上运行时 如果我使用 OpenCVLoader ini
  • 使用 JMH 控制方法的顺序

    我在我的项目中使用 JMH 基准测试 我用 Benchmark注释了方法1和方法2 我希望顺序是 method1 method2 mehod1 method2 等等 这意味着 我希望方法 2 会立即遵循方法 1 有没有办法这样做 谢谢你 J
  • 如何让 Materialise 选择下拉列表与 React 一起使用?

    添加以下模板代码由物化提供不能立即在 React 组件中工作 div class input field col s12 div
  • 如何在AdvancedCustomDrawItem期间绘制TTreeView的样式选择矩形?

    我是做定制的TTreeView使用从头开始绘制OnAdvancedCustomDrawItem事件 我想知道如何在我的所有者绘制项目的背景中正确渲染这些选择和热矩形 它们是 Vista 7 风格的 所以我不能简单地用纯色填充背景 我尝试在以
  • 生成唯一的 6 位数代码

    我正在根据以下字符生成 6 位代码 这些将用于在贴纸上盖印 它们将以 10k 或更少的批次生成 在打印之前 我预计总数不会超过 1 200 万 可能要少得多 生成批量代码后 我将检查现有代码的 MySQL 数据库以确保没有重复 exclud
  • 透明 SCNFloor 上的 SceneKit 阴影()

    我有一个floor node 我需要在其上投射阴影directional light 该节点需要是透明的 用于AR环境 当我使用时这效果很好ARKit 但使用相同的设置SceneKit没有显示任何阴影或反射 我怎样才能投下阴影SceneKi
  • 为整个应用程序设置 CurrentCulture 的简单方法?

    在 net 2 winforms 应用程序中 为整个应用程序设置区域性的好方法是什么 为每个新线程设置 CurrentThread CurrentCulture 是重复的且容易出错 理想情况下 我想在应用程序启动时设置它并忘记它 NET 中
  • Spring Boot 中 Thymeleaf 的几个模板位置

    现在Spring Boot允许一个值Thymeleaf模板位置与spring thymeleaf prefix财产 默认值为classpath templates 我想要为 thymeleaf 模板设置另一个位置 但保留默认位置 在 jar
  • 从套接字描述符恢复 IP/端口

    我在写inetd 的克隆我必须运行一个服务器来打印连接到它的客户端的 IP 和端口 当我覆盖时STDIN and STDOUT使用套接字描述符 我最初的解决方案这样做是为了恢复sockaddr in结构 其中包含所需的信息 这样做与gets
  • CSS“inner-html”技术? [复制]

    这个问题在这里已经有答案了 我想知道是否有一种方法可以根据元素包含的单词来查询元素 所以 如果我有 div h1 Home h1 div 我想要任何 globalPageHeader h1有这个词Home在其中 有一个display的财产n
  • 如何配置多个格式化程序以在 VSCode 中保存时按顺序运行?

    我正在开发一个 Haskell 项目 该项目的格式必须为both stylish haskell 用于进口重新订购 brittany 用于一般格式 我可以为一种语言设置单一默认格式化程序 haskell editor defaultForm
  • 如何在 Windows 上使用 SSH 详细模式运行 git 命令?

    这是 Windows 版本如何使用 SSH 详细模式运行 git push pull 命令 有时您只需要调试 git 对 SSH 的使用 OpenSSH 有一个 v详细输出的标志 但是如何让 git 使用它呢 如何在 Windows 上使用
  • 将用户名和密码存储在数据库中安全吗?

    我让人们在部落中提交用户名和密码 我需要知道使用此代码将其提交到数据库是否安全 或者在数据库中是否安全 MySQLCon Open Dim SQLADD As String INSERT INTO members username pass
  • 具有许多私有方法的Java测试类[重复]

    这个问题在这里已经有答案了 我有一个类负责将合同从 CSV 导入到数据库 类本身只有一个启动导入的公共方法 其他方法都是私有的 因为只有类本身会使用 并且它们保存逻辑 我开始使用 Spock 对这个类进行测试 并且有很多私有方法 我应该如何
  • 一些使用 PDO 的 ORM?

    我正在寻找一个好的 ORM 即 Active Record 它使用 php 扩展 PDO 作为基础 有什么建议吗 Doctrine or Propel
  • 带有滚动区域的嵌套弹性盒

    我正在尝试在最新的 Chrome Firefox 和 IE11 中实现这种布局 我可以通过以下方式让它工作 html box sizing border box before after box sizing inherit html bo
  • Rails 控制器中创建方法的 SQL 注入预防

    如comment controller rb中所示 def create comment Comment new params comment comment save end 我假设这是 SQL 注入不安全的 但正确的做法是什么 网上的所
  • 重写 Django ModelForm 中的 save 方法

    我无法覆盖ModelForm保存方法 这是我收到的错误 Exception Type TypeError Exception Value save got an unexpected keyword argument commit 我的目的
  • 转换 osmnx 投影地图的经纬度坐标

    我想从 osmnx 获取距离经纬度对最近的节点 下载 osmnx 图形对象后 我想对其进行投影 以便我可以按照文档中的说明从道路网络中删除死胡同 我知道我投影了图表以及需要投影的纬度 经度值 但我实际上不明白以哪种方式 例如 我在我的项目中