查看传单geojson时失真
Distortion when viewing leaflet geojson
我一直在尝试在浏览器中查看一些带有传单的 gis 文件。当我在 http://lsi.iiit.ac.in:8095/lsiviewer or http://mapshaper.org/ 等其他页面中查看它们时,它们显示正确。但是,当我在传单中查看它们时,文件没有按应有的方式显示 - 它们被扭曲了。
这是 shapefile 档案:
https://drive.google.com/drive/folders/0BxYlN9E2saSzSnEwMHVoRGhBYTQ?usp=sharing
这是 "good" 和 "bad" 形状显示方式的 2 个屏幕截图:
https://drive.google.com/drive/folders/1eH89girZ7uGEos87SCY-t26IaWdauSc3?usp=sharing
我的代码:
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import * as shp from 'shpjs';
import * as L from 'leaflet';
@Component({
selector: 'page-oportunidaddetalles',
templateUrl: 'oportunidaddetalles.html',
})
export class OportunidaddetallesPage {
constructor(public navCtrl: NavController, public navParams: NavParams) {
}
ionViewDidLoad() {
var map = L.map('map', {
center: [51.505, -0.09],
zoom: 13
});
shp("./assets/my/RETINA").then(function(geojson){
L.geoJSON(geojson).addTo(map);
});
}
}
#map{
position: relative !important;
height: 1200px;
width: 900px;
}
<!--this is from the ionic page, so it's just a div-->
<div id="map">
</div>
使用像 https://mygeodata.cloud/converter/shp-to-geojson 这样的转换工具检查您的 SHP 文件,它似乎使用 Belge 1972 / Belgian Lambert 72 (EPSG:31370) 坐标系。
您使用的库 Shapefile.js (i.e. npm package "shpjs"
) 似乎需要 *.dbf
文件中的此投影信息,而您的数据中缺少该信息。
一旦您的 SHP 文件被转换为 WGS 84 (EPSG:4326),它在 Leaflet 中显示良好:
您可以使用上面链接的工具将您的文件直接转换成GeoJSON和WGS 84坐标系,这样您就不再需要Shapefile.js.
我一直在尝试在浏览器中查看一些带有传单的 gis 文件。当我在 http://lsi.iiit.ac.in:8095/lsiviewer or http://mapshaper.org/ 等其他页面中查看它们时,它们显示正确。但是,当我在传单中查看它们时,文件没有按应有的方式显示 - 它们被扭曲了。
这是 shapefile 档案: https://drive.google.com/drive/folders/0BxYlN9E2saSzSnEwMHVoRGhBYTQ?usp=sharing
这是 "good" 和 "bad" 形状显示方式的 2 个屏幕截图: https://drive.google.com/drive/folders/1eH89girZ7uGEos87SCY-t26IaWdauSc3?usp=sharing
我的代码:
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import * as shp from 'shpjs';
import * as L from 'leaflet';
@Component({
selector: 'page-oportunidaddetalles',
templateUrl: 'oportunidaddetalles.html',
})
export class OportunidaddetallesPage {
constructor(public navCtrl: NavController, public navParams: NavParams) {
}
ionViewDidLoad() {
var map = L.map('map', {
center: [51.505, -0.09],
zoom: 13
});
shp("./assets/my/RETINA").then(function(geojson){
L.geoJSON(geojson).addTo(map);
});
}
}
#map{
position: relative !important;
height: 1200px;
width: 900px;
}
<!--this is from the ionic page, so it's just a div-->
<div id="map">
</div>
使用像 https://mygeodata.cloud/converter/shp-to-geojson 这样的转换工具检查您的 SHP 文件,它似乎使用 Belge 1972 / Belgian Lambert 72 (EPSG:31370) 坐标系。
您使用的库 Shapefile.js (i.e. npm package "shpjs"
) 似乎需要 *.dbf
文件中的此投影信息,而您的数据中缺少该信息。
一旦您的 SHP 文件被转换为 WGS 84 (EPSG:4326),它在 Leaflet 中显示良好:
您可以使用上面链接的工具将您的文件直接转换成GeoJSON和WGS 84坐标系,这样您就不再需要Shapefile.js.