将纬度和经度值映射到图像上

发布于 2024-08-21 21:36:45 字数 527 浏览 11 评论 0原文

我正在尝试对值进行地理编码并将其映射到一个城市(准确地说是纽约市)的卫星图像。我在使用世界地理空间图像之前已经成功完成了此操作,然后将经度和纬度值从最大纬度/经度范围(-90,90 & -180,180)映射/缩放到图像的最大宽度和高度(0,宽度和0,高度)效果很好。我有点困惑如何对城市地图执行此操作。

目前,我有一张纽约市的高分辨率卫星图像,并对其进行了定位,使其与 Google 地图上的纽约市地图完美对齐(我正在使用他们的 API 对我的位置进行地理编码)。我尝试获取我正在使用的卫星图像的顶部/底部纬度值和左/右经度值,并尝试缩放需要映射到该范围内的图像上的任何经度/纬度值。然而,这似乎不起作用。我是否可以使用另一种方法,以便可以将纬度/经度坐标动态映射到纽约市的卫星图像上?

这本质上是我想要映射到的图像: 替代文本

谢谢。

i'm trying to geocode values and map them to a satellite image of a city (new york city to be precise). i've successfully done this before using a geospatial image of the world, and then mapped/scaled longitude and latitude values from the max lat/lng range (-90,90 & -180,180) to the max width and hight of the image (0,width & 0,height) which worked perfectly. i'm a bit confused how to do this to just a map of a city.

currently, i have a hi-res satellite image of new york city, and have positioned it so that it perfectly aligns with the map of new york city on Google Maps (i'm using their API to geocode my locations). i've attempted to get the top/bottom latitude values and left/right longitude values of the satellite image i'm using, and tried to scale any longitude/latitude values that needed to be mapped onto the image within this range. however, this didn't seem to work. is there another method i could use so that it would be possible to dynamically map lat/lng coordinates onto a satellite image of new york city?

this is essentially the image that i would like to map onto:
alt text

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

叶落知秋 2024-08-28 21:36:45

如果您知道图像大小及其地理范围(纬度/经度值),则可以使用以下内容:

x = imageWidth * ( pointLon - ImageExtentLeft ) / (ImageExtentRight - ImageExtentLeft);
y = imageHeight * ( 1 - ( pointLat - ImageExtentBottom) / (ImageExtentTop - mImageExtentBottom));

顺便说一句,如果您使用 Google 地图 API 对您的位置进行地理编码,为什么不使用其函数来添加直接标记到您的地图上? (也许我没有完全理解你的情况)

var latlng = new GLatLng(pointLat, pointLon);
map.addOverlay(new GMarker(latlng));

希望有帮助

If you know the image size and its geographic extent (lat/lon values), you can use something like:

x = imageWidth * ( pointLon - ImageExtentLeft ) / (ImageExtentRight - ImageExtentLeft);
y = imageHeight * ( 1 - ( pointLat - ImageExtentBottom) / (ImageExtentTop - mImageExtentBottom));

By the way, if you are using the Google Maps API to geocode your locations, why don't you use its functions to add markers directly to your map? (Maybe I didn't completely understand your case)

var latlng = new GLatLng(pointLat, pointLon);
map.addOverlay(new GMarker(latlng));

Hope it helps

记忆里有你的影子 2024-08-28 21:36:45

您正在参与一个称为图像配准或地图校正的过程。有一套专门用于执行此操作的遥感方程。

也许您可以从这个网站开始 - 它基本上应该满足您的需要
http://labs.metacarta.com/rectifier/
(死了链接)

如果没有,那么也许看看 QGIS 或 GRASS 等工具。如果您有金钱和时间,您还可以使用 ESRI ArcGIS Desktop 或 ERDAS Imagine 或 IDRISI。

You are engaging in a process called image registration or map rectification. There is a whole set of remote sensing dedicated to the equations for doing this.

Perhaps you can just start with this web site - it should basically do what you need
http://labs.metacarta.com/rectifier/
(dead link)

if not then maybe look at tools like QGIS or GRASS. If you have money and time you can also use ESRI ArcGIS desktop or ERDAS Imagine or IDRISI.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文