swiss-projection
Version:
Convert from LV03(EPSG:21781) and LV95(EPSG:2056) to WGS84(EPSG:4326)
72 lines (60 loc) • 2.54 kB
text/typescript
import test from 'tape'
import convert from '../convert'
import { fromLV95 } from '../fromCH'
import * as data from './data'
const convertFromLV95 = convert<any>(fromLV95)
const isWgsPoint = ([lng, lat]: number[]): boolean =>
// is in switzerland
lng > 5 && lng < 10 && lat > 40 && lat < 50
const isWgsLine = (line: number[][]): boolean =>
!line.map(isWgsPoint).includes(false)
const isWgsPolygon = (polygon: number[][][]): boolean =>
!polygon.map(isWgsLine).includes(false)
test('convert featureCollection', t => {
const res = convertFromLV95(data.collection)
t.same(res.type, 'FeatureCollection', 'should return collection')
t.same(res.features.length, data.collection.features.length, 'should return same number of features')
t.end()
})
test('convert feature with polygon', t => {
const res = convertFromLV95(data.baselPolygonFeature)
t.same(res.type, 'Feature', 'should return a feature')
t.same(res.properties, data.baselPolygonFeature.properties, 'with unchanged properties')
t.true(isWgsPolygon(res.geometry.coordinates), 'should return a wgs geometry')
t.end()
})
test('convert feature with point', t => {
const res = convertFromLV95(data.yverdonPointFeature)
t.same(res.type, 'Feature', 'should return a feature')
t.same(res.properties, data.yverdonPointFeature.properties, 'with unchanged properties')
t.true(isWgsPoint(res.geometry.coordinates), 'should return a wgs geometry')
t.end()
})
test('convert geometry collection', t => {
const res = convertFromLV95(data.geometryCollection)
t.same(res.type, 'GeometryCollection')
t.same(res.geometries.length, data.geometryCollection.geometries.length, 'should return same number of geometries')
t.end()
})
test('convert polygon geometry', t => {
const res = convertFromLV95(data.polygonGeometry)
t.same(res.type, 'Polygon', 'should return a point geometry')
t.true(isWgsPolygon(res.coordinates), 'should return a wgs polygon')
t.end()
})
test('convert point geometry', t => {
const res = convertFromLV95(data.pointGeometry)
t.same(res.type, 'Point', 'should return a point geometry')
t.true(isWgsPoint(res.coordinates), 'should return a wgs point')
t.end()
})
test('convert point coordinates', t => {
const res = convertFromLV95(data.pointGeometry.coordinates)
t.true(isWgsPoint(res), 'should return a wgs point')
t.end()
})
test('convert polygon coordinates', t => {
const res = convertFromLV95(data.polygonGeometry.coordinates)
t.true(isWgsPolygon(res), 'should return a wgs point')
t.end()
})