Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传单:如何使用AutoCAD数据显示Geojson文件?_Javascript_Leaflet - Fatal编程技术网

Javascript 传单:如何使用AutoCAD数据显示Geojson文件?

Javascript 传单:如何使用AutoCAD数据显示Geojson文件?,javascript,leaflet,Javascript,Leaflet,我试图将geojson文件(从AutoCAD文件转换为geojson)显示为第二层(第一层映射为OSM) 但geojson内容占据了整个地图,而不是特定位置 我们如何更改geojson文件中的坐标,或者如何减少geojson(第二层)的高度和宽度?请在下面找到示例geojson文件 { "type": "FeatureCollection", "name": "entities", "crs": { "type": "name", "properties":

我试图将geojson文件(从AutoCAD文件转换为geojson)显示为第二层(第一层映射为OSM

但geojson内容占据了整个地图,而不是特定位置

我们如何更改geojson文件中的坐标,或者如何减少geojson(第二层)的高度和宽度?请在下面找到示例geojson文件

    {
  "type": "FeatureCollection",
  "name": "entities",
  "crs": {
    "type": "name",
    "properties": {
      "name": "urn:ogc:def:crs:OGC:1.3:CRS84"
    }
  },
  "features": [
    {
      "type": "Feature",
      "properties": {
        "Layer": "entities",
        "SubClasses": "AcDbEntity:AcDbPolyline",
        "EntityHandle": "1FFF0038"
      },
      "geometry": {
        "type": "LineString",
        "coordinates": [
          [
            0,
            0
          ],
          [
            0,
            319.9694
          ],
          [
            361.2444,
            319.9694
          ],
          [
            361.2444,
            0
          ],
          [
            0,
            0
          ]
        ]
      }
    },
    {
      "type": "Feature",
      "properties": {
        "Layer": "entities",
        "SubClasses": "AcDbEntity:AcDbPolyline",
        "EntityHandle": "1FFF011D"
      },
      "geometry": {
        "type": "LineString",
        "coordinates": [
          [
            0,
            252.0448
          ],
          [
            0,
            319.9694
          ],
          [
            361.2444,
            319.9278
          ],
          [
            361.2444,
            142.5544
          ],
          [
            0,
            142.5544
          ],
          [
            0,
            197.4439
          ],
          [
            9.1842,
            197.4439
          ],
          [
            9.1842,
            151.7295
          ],
          [
            352.0603,
            151.7295
          ],
          [
            352.0603,
            310.7537
          ],
          [
            9.1842,
            310.7932
          ],
          [
            9.1842,
            252.0448
          ],
          [
            0,
            252.0448
          ]
        ]
      }
    }
  ]
}


TL;博士:你把坐标系搞混了


GeoJSON数据中的坐标是指X轴上的经度和Y轴上的经度。这是。当这些坐标映射到笛卡尔平面上时,这将成为一个坐标

相比之下,AutoCAD(或几乎任何其他CAD软件)中的坐标通常指的是米(或英制英尺),当建筑师在椅子和键盘之间时;此外,当在椅子和键盘之间有机械工程师时,它们通常指毫米/厘米(或十分之一英制英寸)

因此,从
-53,-10
0,40
的线路可以是从巴西到西班牙的航班、72米长的墙或72毫米长的电缆

由于您使用的是GeoJSON,而GeoJSON只关心以纬度/经度为单位的地理坐标,因此任何软件都会假定您的坐标为纬度/经度,并相应地显示它们。传单的默认设置是将数据投影到+90/-90度纬度以上/以下的任何位置,并对其进行剪裁。这是意料之中的


那么,坐标系错了,现在该怎么办?我认为有两种方法:

  • 更改CAD坐标,使其参考lat lng。这个过程被称为。具体情况各不相同,可能会很复杂,因此可能是一个良好的开端

  • 告诉传单显示非地理坐标。阅读,并在实例化地图时使用
    crs:L.crs.Simple
    选项。这将使您的数据显示(更)正确,但请记住,GeoJSON不是非地理数据的合适数据格式


  • 无论如何,请注意您的坐标系

    最后,我通过取消投影CRS EPSG3857得到了解决方案,然后相同的geojson文件在传单中运行良好。谢谢

    加入—

    L.CRS.EPSG3857.unproject(point) // where point is coords.
    

    请给我一张支票。请至少包含GeoJSON文件的一部分。嗨,IvanSanchez,我在输出屏幕截图中添加了GeoJSON的一部分。请解释一下如何手动或使用任何工具更改GeoJSON的坐标。因为GeoJSON内容占据了整个地图……crs显然不是
    urn:ogc:def:crs:ogc:1.3:CRS84
    ,如果是,则不会有超过180的值。