有点奇怪的问题,但是希望可以在这里提出。
有没有人听说过世界地图的“一维”投影-将地球上的所有点映射到一条直线上?
我当时正在考虑做这样的事情-试图让那些在世界上“亲密”的城市保持在“亲密”的状态。
在执行此操作之前,我想知道该领域的最新技术水平是什么?
有点奇怪的问题,但是希望可以在这里提出。
有没有人听说过世界地图的“一维”投影-将地球上的所有点映射到一条直线上?
我当时正在考虑做这样的事情-试图让那些在世界上“亲密”的城市保持在“亲密”的状态。
在执行此操作之前,我想知道该领域的最新技术水平是什么?
Answers:
将距离(具有给定距离)的点集合映射到欧几里得空间(例如,三个空间,一个平面甚至一条线)中且距离失真最小的一般技术称为多维缩放(MDS)。有几种算法。解决方案可在R中免费获得,并且通常随商业统计软件包一起提供。
使用Stata 11的默认MDS设置在此处映射了美国最大的20个城市。刻度表示100公里间隔。
非常感谢@whuber的最初答案。以为我应该上传我做同样的结果...
对于我使用的特殊形式的MDS,值得使用的是称为t-SNE(又称为“ t分布随机Neihbor嵌入”)的图像,以获取以下图像。
这是按顺序排列的所有城市的图片-左轴是该城市的实际一维位置,并且该城市从上到下,从左到右按该轴的顺序排列。
这是我拍摄的城市线但在世界地图上绘制的另一张图片。我想最重要的是,这个问题可以简化为非常接近旅行销售人员的问题-但区别在于它不仅是城市的排序,而且是城市的排序将城市映射到一维线...
如果有人想要此处使用的完整输出数据或方法,请给我发消息。
-
编辑:
回应@whuber的表扬。
是的,当您强调局部距离时(即相邻邻居的局部距离应尽可能接近世界地图上的实际距离),您是对的,MDS问题简化为旅行商问题。但是,如果您强调在更宽/更适中的范围内优化(或匹配)距离,则会得到不同的结果。例如,这是当您为“困惑度”使用更高的值时,t-sne算法给出的结果:
您可以做的是用一维空间填充曲线(例如Peano曲线或希尔伯特曲线)覆盖二维空间。然后,将点映射到曲线上的最近点。展开曲线,您应在某种程度上获得一条直线,该直线的距离最近的城市在该直线上。
它不是完美的(我认为什么都不可能),但是我已经看到它可以用作旅行推销员算法的基础-这个想法是,如果您沿着路线进行推销员旅行,那将是一个很好的近似最好的解决方案。
奇怪的问题通常是最有趣的问题!
如果您正在寻找制图中使用尺寸的最新技术,则可以从Bertin的图形符号学开始。根据Bertin的说法,一张纸(或ipad表面)具有3个尺寸:两个平面尺寸,加上值/纹理。图形符号学提供了将信息维映射到这些表示维的规则。当两个平面尺寸为空间尺寸时,图形为地图,第三个尺寸用于表示信息。
如果要制作一维地图,则意味着您选择限制不要使用纸的某一尺寸来表示想要的信息(城市之间的距离)。是否真的需要施加这样的约束而不制作法线贴图?
如其他答案中所述,如果确实需要它,则无法完成!城市之间的邻近关系无法一维表示。为此,您可以:
trying to keep cities that are 'close' on the globe 'close' on the line
想象一下三个城市彼此之间的距离相等,例如在等边三角形的顶点处。您如何在线上表示呢?一些信息将丢失。
您要么完全放弃一个维度,例如将所有城市投影在平行或子午线上(后者很有趣,因为我们不习惯比较不同国家之间城市的南北相对位置),或者选择一个特定的子午线尺寸度量,例如“距纽约的距离”。
Spacedman建议的Peano曲线非常有趣,可以绘制原始地图,但附近的城市可能会在该曲线上走得很远。
我从未使用过它,但我认为GeoHash可能适用于此。
Geohash提供了诸如任意精度的属性,并具有从代码末尾逐渐删除字符以减小其大小(并逐渐失去精度)的可能性。
由于精度逐渐降低,附近的地点通常(但不总是)呈现相似的前缀。相反,共享前缀越长,两个位置越近。