diff --git a/package.json b/package.json index 97c3c5b..6fd58ff 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,8 @@ "onLanguage:kml", "onLanguage:gml", "onLanguage:shp", - "onLanguage:wkt" + "onLanguage:wkt", + "onLanguage:wkb" ], "main": "./dist/extension.js", "contributes": { @@ -214,7 +215,7 @@ "explorer/context": [ { "command": "map.view", - "when": "resourceFilename =~ /.*\\.(csv|fgb|igc|gml|gpx|json|geojson|kgl|kml|shp|topojson|wkt)/", + "when": "resourceFilename =~ /.*\\.(csv|fgb|igc|gml|gpx|json|geojson|kgl|kml|shp|topojson|wkt|wkb)/", "group": "navigation" } ], diff --git a/src/config.ts b/src/config.ts index 5c9e55f..892b8f9 100644 --- a/src/config.ts +++ b/src/config.ts @@ -3,7 +3,7 @@ import { LogLevel } from "./logger"; // log level setting for prod. vs. dev run of this ext. export const logLevel: LogLevel = LogLevel.Info; // change to .Debug for dev ... -export const supportedDataFiles: RegExp = /.*\.(csv|dbf|fgb|gpx|json|geojson|gml|kgl|kml|prj|shp|topojson|wkt)/; +export const supportedDataFiles: RegExp = /.*\.(csv|dbf|fgb|gpx|json|geojson|gml|kgl|kml|prj|shp|topojson|wkt|wkb)/; export const mapboxToken: string = 'pk.eyJ1IjoiZGF0YXBpeHkiLCJhIjoiY2s1Mm10bHB1MThnbDNrdGVmemptd3J5eSJ9.xewq9dOWQLemerED1-qPXQ'; @@ -16,6 +16,7 @@ export const openFileFilters: any = { 'IGC': ['igc'], 'Shapefile': ['shp'], 'WKT': ['wkt'], + 'WKB': ['wkb'], 'FlatGeobuf': ['fgb'] }; diff --git a/src/map.view.ts b/src/map.view.ts index ee63d1e..203efe4 100644 --- a/src/map.view.ts +++ b/src/map.view.ts @@ -382,6 +382,7 @@ export class MapView { case '.igc': case '.gml': case '.wkt': + case '.wkb': // just pass through raw string content this._mapData = this._content; this.refreshMapView(); diff --git a/web/scripts/map.view.js b/web/scripts/map.view.js index bbcc527..df98571 100644 --- a/web/scripts/map.view.js +++ b/web/scripts/map.view.js @@ -211,6 +211,15 @@ function initializeMap(keplerGl, store, config, data, dataType) { data = KeplerGl.processGeojson(data); tagData = true; break; + case '.wkb': + // read WKB data + const wkbFormat = new ol.format.WKB(); + const wkbFeatures = wkbFormat.readFeatures(data, {hex: true}); + geoDataFeatures = geoJsonFormat.writeFeatures(wkbFeatures); + data = JSON.parse(geoDataFeatures); + data = KeplerGl.processGeojson(data); + tagData = true; + break; case 'geo.json': case '.geojson': case '.gpx':