簡體   English   中英

Leaflet:如何使用 AutoCAD 數據顯示 Geojson 文件?

[英]Leaflet: How to display a Geojson file with AutoCAD data?

我試圖將 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;DR:您混淆了坐標系。


GeoJSON 數據中的坐標指的是 X 軸的經度和 Y 軸的經度。 這是根據定義 當這些坐標映射到笛卡爾平面上時,就變成了等角投影

相比之下,當椅子和鍵盤之間有建築師時,AutoCAD(或幾乎任何其他 CAD 軟件)中的坐標通常指的是米(或英制英尺)。 當椅子和鍵盤之間有機械工程師時,它們通常指的是毫米/厘米(或英制英寸的十分之一)。

因此,從-53, -100, 40的線路既可以是從巴西到西班牙的航班,也可以是 72 米長的牆,或 72 毫米長的電纜。

由於您使用的是 GeoJSON,而 GeoJSON關心以緯度/經度為單位的地理坐標,因此任何軟件都會假定您的坐標是緯度/經度,並相應地顯示它們。 Leaflet 的默認設置是將數據投影到Web 墨卡托,並剪裁高於/低於緯度 +90/-90 度的任何內容。 這是可以預料的。


那么,坐標系錯了,現在該怎么辦? 我看到兩種方法:

  1. 更改 CAD 坐標,使其參考 lat-lng。 此過程稱為地理配准 具體情況不同且可能很復雜,因此通過 GIS StackExchange 進行搜索可能是一個好的開始。

  2. 告訴 Leaflet 顯示非地理坐標。 閱讀有關該主題的 Leaflet 教程,並在實例化 map 時使用crs: L.CRS.Simple選項。 這應該使您的數據顯示(更多)正確,但請記住GeoJSON 不是非地理數據的合適數據格式

無論如何,請注意您的坐標系

最后我通過取消投影 CRS EPSG3857 得到了解決方案,然后相同的 geojson 文件在 leaflet 中正常工作。謝謝..

通過添加,

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM