Javascript d3地质路径、geojsonlint、CW与CCW

Javascript d3地质路径、geojsonlint、CW与CCW,javascript,d3.js,geojson,Javascript,D3.js,Geojson,所以这可能是一个愚蠢的问题,我遗漏了一些明显的东西,但我遇到了一些困惑,我希望有人能告诉我哪里出了问题 根据d3文件: 要点:多边形的内部是多边形按顺时针顺序绕其旋转的所有点。如果GeoJSON输入的多边形缠绕顺序错误,则必须将其反转 好的,很简单。然而,对于我在项目中尝试的每个GeoJSON文件(lint(via)很好),在尝试使用d3的geopaths显示它们时,结果都是相反的 所以我转到这个示例,其中包含一个很好的小GeoJSON示例。这个示例可以工作,示例数据可以在我自己的代码中工作。但

所以这可能是一个愚蠢的问题,我遗漏了一些明显的东西,但我遇到了一些困惑,我希望有人能告诉我哪里出了问题

根据d3文件:

要点:多边形的内部是多边形按顺时针顺序绕其旋转的所有点。如果GeoJSON输入的多边形缠绕顺序错误,则必须将其反转

好的,很简单。然而,对于我在项目中尝试的每个GeoJSON文件(lint(via)很好),在尝试使用d3的geopaths显示它们时,结果都是相反的

所以我转到这个示例,其中包含一个很好的小GeoJSON示例。这个示例可以工作,示例数据可以在我自己的代码中工作。但是,当我使用该示例数据并通过linter运行它时,“多边形和多边形应遵循右手规则”失败,我自己的“确保这是正确的”代码将多边形标识为逆时针方向

现在,该示例似乎与RFC7946中列出的内容相匹配

一个线性环必须遵循右手法则 区域边界,即外环为逆时针方向,以及 孔为顺时针方向

因此,这与我在d3中看到的行为相匹配,但与文档不匹配,对于GeoJSONLint来说似乎有些奇怪

在试图弄明白这一点时,我遇到了前面的问题:

,它提供了一个更简单的测试用例。同样,在d3中工作的版本是逆时针方向,GeoJSonLink失败,而损坏的版本是顺时针方向,在d3中反转,但通过了lint测试

所以我想基本的问题是:

  • 什么是正确的
  • GeoJSONLint网站有错吗

  • D3不遵守关于geojson缠绕顺序的geojson规范。D3需要反向缠绕(坐标像形状文件一样缠绕)。这在验证geojson时很尴尬。有点奇怪的是,当规范还要求使用笛卡尔坐标时,它指定了一个顺序,这意味着无论多边形如何缠绕,只有一种方法可以填充多边形。D3通过使用球形数学再次打破规范,这意味着缠绕顺序很重要。反向缠绕geojson应该不会引起任何问题。出于最实际的目的,turf.js提供了一种在需要时动态缠绕的方法。@Andrewerid哦,哇,我不知道。伟大的建议@安德烈·雷德——这确实可以解释所有的矛盾。