geokernel-electron 1.1.37 → 1.1.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/linux-x64/libGeoKernel.Viewer.so +0 -0
- package/bin/win32-x64/GeoKernel.Core.dll +0 -0
- package/bin/win32-x64/GeoKernel.Formats.dll +0 -0
- package/bin/win32-x64/GeoKernel.Viewer.dll +0 -0
- package/bin/win32-x64/plugins/imageformats/qjpeg.dll +0 -0
- package/package.json +1 -1
- package/src/native-signatures.js +2 -0
- package/src/types.js +9 -0
- package/src/viewer.js +279 -3
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
CHANGED
package/src/native-signatures.js
CHANGED
|
@@ -294,6 +294,8 @@ const SIGNATURES = Object.freeze({
|
|
|
294
294
|
"GeoKernelWindow_GetSelectedLayerIndex": ["int", ["void_p"]],
|
|
295
295
|
"GeoKernelWindow_IsVisible": ["bool", ["void_p"]],
|
|
296
296
|
"GeoKernelWindow_SetCentralViewer": ["void_p", ["void_p"]],
|
|
297
|
+
"GeoKernelWindow_SetCentralTextPanel": ["bool", ["void_p", "wchar_p"]],
|
|
298
|
+
"GeoKernelWindow_SetCentralText": ["bool", ["void_p", "wchar_p"]],
|
|
297
299
|
"GeoKernelWindow_SetControlValue": ["bool", ["void_p", "int", "double", "wchar_p"]],
|
|
298
300
|
"GeoKernelWindow_SetLegendItemsJson": ["bool", ["void_p", "wchar_p"]],
|
|
299
301
|
"GeoKernelWindow_SetLegendTitle": ["bool", ["void_p", "wchar_p"]],
|
package/src/types.js
CHANGED
|
@@ -56,6 +56,14 @@ const ShapeType = Object.freeze({
|
|
|
56
56
|
MULTI_POINT_Z: 18,
|
|
57
57
|
});
|
|
58
58
|
|
|
59
|
+
const AttributeType = Object.freeze({
|
|
60
|
+
STRING: 0,
|
|
61
|
+
INTEGER: 1,
|
|
62
|
+
DOUBLE: 2,
|
|
63
|
+
BOOLEAN: 3,
|
|
64
|
+
DATE_TIME: 4,
|
|
65
|
+
});
|
|
66
|
+
|
|
59
67
|
const SpatialIndexType = Object.freeze({
|
|
60
68
|
LINEAR: 0,
|
|
61
69
|
RTREE: 1,
|
|
@@ -135,6 +143,7 @@ function routeSummary(value) {
|
|
|
135
143
|
}
|
|
136
144
|
|
|
137
145
|
module.exports = {
|
|
146
|
+
AttributeType,
|
|
138
147
|
ClassificationMethod,
|
|
139
148
|
ColorRampMode,
|
|
140
149
|
MeasureMode,
|
package/src/viewer.js
CHANGED
|
@@ -246,6 +246,22 @@ class ViewerWindow {
|
|
|
246
246
|
this.library.function("GeoKernelWindow_SetStatusText")(this.windowHandle, text ?? "");
|
|
247
247
|
}
|
|
248
248
|
|
|
249
|
+
setCentralTextPanel(text = "") {
|
|
250
|
+
const ok = this.library.function("GeoKernelWindow_SetCentralTextPanel")(
|
|
251
|
+
this.windowHandle,
|
|
252
|
+
text,
|
|
253
|
+
);
|
|
254
|
+
if (!ok) throw new Error("GeoKernelWindow_SetCentralTextPanel failed.");
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
setCentralText(text) {
|
|
258
|
+
const ok = this.library.function("GeoKernelWindow_SetCentralText")(
|
|
259
|
+
this.windowHandle,
|
|
260
|
+
text,
|
|
261
|
+
);
|
|
262
|
+
if (!ok) throw new Error("GeoKernelWindow_SetCentralText failed.");
|
|
263
|
+
}
|
|
264
|
+
|
|
249
265
|
addLogPanel(title = "Event log") {
|
|
250
266
|
const ok = this.library.function("GeoKernelWindow_AddLogPanel")(this.windowHandle, title);
|
|
251
267
|
if (!ok) throw new Error("GeoKernelWindow_AddLogPanel failed.");
|
|
@@ -340,6 +356,10 @@ class ViewerWindow {
|
|
|
340
356
|
);
|
|
341
357
|
}
|
|
342
358
|
|
|
359
|
+
xyzLayerDiagnostics(index) {
|
|
360
|
+
return this._readJson("GeoKernelViewer_GetXyzLayerDiagnosticsJson", {}, Number(index));
|
|
361
|
+
}
|
|
362
|
+
|
|
343
363
|
addWmsLayer(options) {
|
|
344
364
|
return this._call(
|
|
345
365
|
"GeoKernelViewer_AddWmsLayer",
|
|
@@ -400,16 +420,128 @@ class ViewerWindow {
|
|
|
400
420
|
commitEditLayer(index) { return this._call("GeoKernelViewer_CommitEditLayer", Number(index)); }
|
|
401
421
|
rollbackEditLayer(index) { return this._call("GeoKernelViewer_RollbackEditLayer", Number(index)); }
|
|
402
422
|
isLayerEditing(index) { return this._call("GeoKernelViewer_IsLayerEditing", Number(index)); }
|
|
423
|
+
canEditLayer(index) { return this._call("GeoKernelViewer_CanEditLayer", Number(index)); }
|
|
403
424
|
setActiveEditLayerIndex(index) { return this._call("GeoKernelViewer_SetActiveEditLayerIndex", Number(index)); }
|
|
404
|
-
|
|
405
|
-
|
|
425
|
+
addLayerAttributeDefinition(index, name, type, length = 0, decimalCount = 0) {
|
|
426
|
+
return this._call(
|
|
427
|
+
"GeoKernelViewer_AddLayerAttributeDefinition",
|
|
428
|
+
Number(index),
|
|
429
|
+
name,
|
|
430
|
+
Number(type),
|
|
431
|
+
Number(length),
|
|
432
|
+
Number(decimalCount),
|
|
433
|
+
);
|
|
434
|
+
}
|
|
435
|
+
addPointToEditLayer(index, x, y, attributes) {
|
|
436
|
+
if (attributes === undefined) {
|
|
437
|
+
return this._call("GeoKernelViewer_AddPointToEditLayer", Number(index), Number(x), Number(y));
|
|
438
|
+
}
|
|
439
|
+
return this._call(
|
|
440
|
+
"GeoKernelViewer_AddPointToEditLayerWithAttributes",
|
|
441
|
+
Number(index),
|
|
442
|
+
Number(x),
|
|
443
|
+
Number(y),
|
|
444
|
+
jsonText(attributes),
|
|
445
|
+
);
|
|
446
|
+
}
|
|
447
|
+
addPolylineToEditLayer(index, points, attributes) {
|
|
406
448
|
const xy = xyArray(points);
|
|
449
|
+
if (attributes !== undefined) {
|
|
450
|
+
return this._call(
|
|
451
|
+
"GeoKernelViewer_AddPolylineToEditLayerWithAttributes",
|
|
452
|
+
Number(index),
|
|
453
|
+
xy,
|
|
454
|
+
xy.length / 2,
|
|
455
|
+
jsonText(attributes),
|
|
456
|
+
);
|
|
457
|
+
}
|
|
407
458
|
return this._call("GeoKernelViewer_AddPolylineToEditLayer", Number(index), xy, xy.length / 2);
|
|
408
459
|
}
|
|
409
|
-
addPolygonToEditLayer(index, points) {
|
|
460
|
+
addPolygonToEditLayer(index, points, attributes) {
|
|
410
461
|
const xy = xyArray(points);
|
|
462
|
+
if (attributes !== undefined) {
|
|
463
|
+
return this._call(
|
|
464
|
+
"GeoKernelViewer_AddPolygonToEditLayerWithAttributes",
|
|
465
|
+
Number(index),
|
|
466
|
+
xy,
|
|
467
|
+
xy.length / 2,
|
|
468
|
+
jsonText(attributes),
|
|
469
|
+
);
|
|
470
|
+
}
|
|
411
471
|
return this._call("GeoKernelViewer_AddPolygonToEditLayer", Number(index), xy, xy.length / 2);
|
|
412
472
|
}
|
|
473
|
+
deleteShapeFromEditLayer(index, shapeId) {
|
|
474
|
+
return this._call("GeoKernelViewer_DeleteShapeFromEditLayer", Number(index), Number(shapeId));
|
|
475
|
+
}
|
|
476
|
+
deleteSelectedFeaturesFromEditLayer() {
|
|
477
|
+
return this._call("GeoKernelViewer_DeleteSelectedFeaturesFromEditLayer");
|
|
478
|
+
}
|
|
479
|
+
canMoveSelectedFeatures() {
|
|
480
|
+
return this._call("GeoKernelViewer_CanMoveSelectedFeatures");
|
|
481
|
+
}
|
|
482
|
+
canEditSelectedFeatures() {
|
|
483
|
+
return this._call("GeoKernelViewer_CanEditSelectedFeatures");
|
|
484
|
+
}
|
|
485
|
+
canEditSelectedVertices() {
|
|
486
|
+
return this._call("GeoKernelViewer_CanEditSelectedVertices");
|
|
487
|
+
}
|
|
488
|
+
deleteSelectedVertexFromEditLayer() {
|
|
489
|
+
return this._call("GeoKernelViewer_DeleteSelectedVertexFromEditLayer");
|
|
490
|
+
}
|
|
491
|
+
insertSelectedFeatureVertexInEditLayer(partIndex, insertIndex, worldX, worldY) {
|
|
492
|
+
return this._call(
|
|
493
|
+
"GeoKernelViewer_InsertSelectedFeatureVertexInEditLayer",
|
|
494
|
+
Number(partIndex),
|
|
495
|
+
Number(insertIndex),
|
|
496
|
+
Number(worldX),
|
|
497
|
+
Number(worldY),
|
|
498
|
+
);
|
|
499
|
+
}
|
|
500
|
+
deleteSelectedFeatureVertexInEditLayer(partIndex, vertexIndex) {
|
|
501
|
+
return this._call(
|
|
502
|
+
"GeoKernelViewer_DeleteSelectedFeatureVertexInEditLayer",
|
|
503
|
+
Number(partIndex),
|
|
504
|
+
Number(vertexIndex),
|
|
505
|
+
);
|
|
506
|
+
}
|
|
507
|
+
canUndoEditLayer(index) {
|
|
508
|
+
return this._call("GeoKernelViewer_CanUndoEditLayer", Number(index));
|
|
509
|
+
}
|
|
510
|
+
canRedoEditLayer(index) {
|
|
511
|
+
return this._call("GeoKernelViewer_CanRedoEditLayer", Number(index));
|
|
512
|
+
}
|
|
513
|
+
undoEditLayer(index) {
|
|
514
|
+
return this._call("GeoKernelViewer_UndoEditLayer", Number(index));
|
|
515
|
+
}
|
|
516
|
+
redoEditLayer(index) {
|
|
517
|
+
return this._call("GeoKernelViewer_RedoEditLayer", Number(index));
|
|
518
|
+
}
|
|
519
|
+
setShapeAttributesInEditLayer(index, shapeId, attributes) {
|
|
520
|
+
return this._call(
|
|
521
|
+
"GeoKernelViewer_SetShapeAttributesInEditLayerJson",
|
|
522
|
+
Number(index),
|
|
523
|
+
Number(shapeId),
|
|
524
|
+
jsonText(attributes),
|
|
525
|
+
);
|
|
526
|
+
}
|
|
527
|
+
editSnappingEnabled() {
|
|
528
|
+
return this._call("GeoKernelViewer_GetEditSnappingEnabled");
|
|
529
|
+
}
|
|
530
|
+
setEditSnappingEnabled(enabled) {
|
|
531
|
+
this._call("GeoKernelViewer_SetEditSnappingEnabled", Boolean(enabled));
|
|
532
|
+
}
|
|
533
|
+
editSnappingTolerancePixels() {
|
|
534
|
+
return this._call("GeoKernelViewer_GetEditSnappingTolerancePixels");
|
|
535
|
+
}
|
|
536
|
+
setEditSnappingTolerancePixels(tolerance) {
|
|
537
|
+
this._call("GeoKernelViewer_SetEditSnappingTolerancePixels", Number(tolerance));
|
|
538
|
+
}
|
|
539
|
+
isLayerDirty(index) {
|
|
540
|
+
return this._call("GeoKernelViewer_IsLayerDirty", Number(index));
|
|
541
|
+
}
|
|
542
|
+
moveSelectedFeaturesInEditLayer(deltaX, deltaY) {
|
|
543
|
+
return this._call("GeoKernelViewer_MoveSelectedFeaturesInEditLayer", Number(deltaX), Number(deltaY));
|
|
544
|
+
}
|
|
413
545
|
|
|
414
546
|
addPointLayer(name, points, style) {
|
|
415
547
|
const xy = xyArray(points);
|
|
@@ -623,6 +755,49 @@ class ViewerWindow {
|
|
|
623
755
|
this._call("GeoKernelViewer_SetViewExtent", extentObject(value));
|
|
624
756
|
}
|
|
625
757
|
|
|
758
|
+
setCoordinateSystemPreset(preset) {
|
|
759
|
+
return this._call("GeoKernelViewer_SetCoordinateSystemPreset", String(preset));
|
|
760
|
+
}
|
|
761
|
+
|
|
762
|
+
setLayerCoordinateSystemPreset(index, preset) {
|
|
763
|
+
return this._call(
|
|
764
|
+
"GeoKernelViewer_SetLayerCoordinateSystemPreset",
|
|
765
|
+
Number(index),
|
|
766
|
+
String(preset),
|
|
767
|
+
);
|
|
768
|
+
}
|
|
769
|
+
|
|
770
|
+
transformPoint(sourceEpsg, targetEpsg, x, y) {
|
|
771
|
+
const transformedX = [0];
|
|
772
|
+
const transformedY = [0];
|
|
773
|
+
const ok = this.library.function("GeoKernelViewer_TransformPoint")(
|
|
774
|
+
Number(sourceEpsg),
|
|
775
|
+
Number(targetEpsg),
|
|
776
|
+
Number(x),
|
|
777
|
+
Number(y),
|
|
778
|
+
transformedX,
|
|
779
|
+
transformedY,
|
|
780
|
+
);
|
|
781
|
+
return ok ? point(transformedX[0], transformedY[0]) : null;
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
coordinateSystemFromAuthority(authority, code) {
|
|
785
|
+
return this._readStaticJson(
|
|
786
|
+
"GeoKernelViewer_CoordinateSystemFromAuthorityJson",
|
|
787
|
+
{},
|
|
788
|
+
String(authority),
|
|
789
|
+
Number(code),
|
|
790
|
+
);
|
|
791
|
+
}
|
|
792
|
+
|
|
793
|
+
coordinateSystemFromEpsg(code) {
|
|
794
|
+
return this._readStaticJson(
|
|
795
|
+
"GeoKernelViewer_CoordinateSystemFromEpsgJson",
|
|
796
|
+
{},
|
|
797
|
+
Number(code),
|
|
798
|
+
);
|
|
799
|
+
}
|
|
800
|
+
|
|
626
801
|
worldToScreen(x, y) {
|
|
627
802
|
const screenX = [0];
|
|
628
803
|
const screenY = [0];
|
|
@@ -697,6 +872,68 @@ class ViewerWindow {
|
|
|
697
872
|
return this._readJson("GeoKernelViewer_GetLayerFeatureAttributesJson", {}, Number(index), Number(rowIndex));
|
|
698
873
|
}
|
|
699
874
|
|
|
875
|
+
hitTestTopFeatureAt(screenX, screenY, pixelTolerance = 8) {
|
|
876
|
+
return this._readJson(
|
|
877
|
+
"GeoKernelViewer_HitTestTopFeatureAtJson",
|
|
878
|
+
null,
|
|
879
|
+
Number(screenX),
|
|
880
|
+
Number(screenY),
|
|
881
|
+
Number(pixelTolerance),
|
|
882
|
+
);
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
hitTestFeaturesAt(screenX, screenY, pixelTolerance = 8) {
|
|
886
|
+
return this._readJson(
|
|
887
|
+
"GeoKernelViewer_HitTestFeaturesAtJson",
|
|
888
|
+
[],
|
|
889
|
+
Number(screenX),
|
|
890
|
+
Number(screenY),
|
|
891
|
+
Number(pixelTolerance),
|
|
892
|
+
);
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
hitTestFeatures(worldX, worldY, worldTolerance) {
|
|
896
|
+
return this._readJson(
|
|
897
|
+
"GeoKernelViewer_HitTestFeaturesJson",
|
|
898
|
+
[],
|
|
899
|
+
Number(worldX),
|
|
900
|
+
Number(worldY),
|
|
901
|
+
Number(worldTolerance),
|
|
902
|
+
);
|
|
903
|
+
}
|
|
904
|
+
|
|
905
|
+
hitTestFeaturesInScreenRect(left, top, right, bottom) {
|
|
906
|
+
return this._readJson(
|
|
907
|
+
"GeoKernelViewer_HitTestFeaturesInScreenRectJson",
|
|
908
|
+
[],
|
|
909
|
+
Number(left),
|
|
910
|
+
Number(top),
|
|
911
|
+
Number(right),
|
|
912
|
+
Number(bottom),
|
|
913
|
+
);
|
|
914
|
+
}
|
|
915
|
+
|
|
916
|
+
selectFeaturesInScreenRect(left, top, right, bottom, selectionMode = 0) {
|
|
917
|
+
const x = Math.min(Number(left), Number(right));
|
|
918
|
+
const y = Math.min(Number(top), Number(bottom));
|
|
919
|
+
const width = Math.abs(Number(right) - Number(left)) + 1;
|
|
920
|
+
const height = Math.abs(Number(bottom) - Number(top)) + 1;
|
|
921
|
+
return this._call("GeoKernelViewer_SelectFeaturesInScreenRect", x, y, width, height, Number(selectionMode));
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
selectFeatureHit(hit, worldTolerance) {
|
|
925
|
+
if (!hit?.worldPoint) return false;
|
|
926
|
+
return this._call(
|
|
927
|
+
"GeoKernelViewer_SelectFeatureHit",
|
|
928
|
+
Number(hit.worldPoint.x),
|
|
929
|
+
Number(hit.worldPoint.y),
|
|
930
|
+
Number(worldTolerance),
|
|
931
|
+
Number(hit.layerIndex),
|
|
932
|
+
Number(hit.shapeId),
|
|
933
|
+
Number(hit.featureId),
|
|
934
|
+
);
|
|
935
|
+
}
|
|
936
|
+
|
|
700
937
|
layerProjectedExtent(index) {
|
|
701
938
|
const value = {};
|
|
702
939
|
const ok = this._call("GeoKernelViewer_GetLayerProjectedExtent", Number(index), value);
|
|
@@ -719,6 +956,10 @@ class ViewerWindow {
|
|
|
719
956
|
return this._call("GeoKernelViewer_RemoveLayerByName", name);
|
|
720
957
|
}
|
|
721
958
|
|
|
959
|
+
saveLayerAsShapefile(index, outputPath) {
|
|
960
|
+
return this._call("GeoKernelViewer_SaveLayerAsShapefile", Number(index), outputPath);
|
|
961
|
+
}
|
|
962
|
+
|
|
722
963
|
setLayerName(index, name) {
|
|
723
964
|
return this._call("GeoKernelViewer_SetLayerName", Number(index), name);
|
|
724
965
|
}
|
|
@@ -748,10 +989,30 @@ class ViewerWindow {
|
|
|
748
989
|
this._call("GeoKernelViewer_ClearSelectedFeatures");
|
|
749
990
|
}
|
|
750
991
|
|
|
992
|
+
selectTopFeatureAt(screenX, screenY, pixelTolerance = 8) {
|
|
993
|
+
return this._call("GeoKernelViewer_SelectTopFeatureAt", Number(screenX), Number(screenY), Number(pixelTolerance));
|
|
994
|
+
}
|
|
995
|
+
|
|
996
|
+
addTopFeatureToSelectionAt(screenX, screenY, pixelTolerance = 8) {
|
|
997
|
+
return this._call("GeoKernelViewer_AddTopFeatureToSelectionAt", Number(screenX), Number(screenY), Number(pixelTolerance));
|
|
998
|
+
}
|
|
999
|
+
|
|
1000
|
+
toggleTopFeatureSelectionAt(screenX, screenY, pixelTolerance = 8) {
|
|
1001
|
+
return this._call("GeoKernelViewer_ToggleTopFeatureSelectionAt", Number(screenX), Number(screenY), Number(pixelTolerance));
|
|
1002
|
+
}
|
|
1003
|
+
|
|
1004
|
+
selectedFeatures() {
|
|
1005
|
+
return this._readJson("GeoKernelViewer_GetSelectedFeaturesJson", []);
|
|
1006
|
+
}
|
|
1007
|
+
|
|
751
1008
|
selectedFeatureCount() {
|
|
752
1009
|
return this._call("GeoKernelViewer_GetSelectedFeatureCount");
|
|
753
1010
|
}
|
|
754
1011
|
|
|
1012
|
+
zoomToSelectedFeatures() {
|
|
1013
|
+
return this._call("GeoKernelViewer_ZoomToSelectedFeatures");
|
|
1014
|
+
}
|
|
1015
|
+
|
|
755
1016
|
clearLayers() {
|
|
756
1017
|
this._call("GeoKernelViewer_ClearLayers");
|
|
757
1018
|
}
|
|
@@ -844,6 +1105,21 @@ class ViewerWindow {
|
|
|
844
1105
|
return parseJson(readWideJson(this.library.function(name), this.viewerHandle, ...args), fallback);
|
|
845
1106
|
}
|
|
846
1107
|
|
|
1108
|
+
_readStaticJson(name, fallback, ...args) {
|
|
1109
|
+
const fn = this.library.function(name);
|
|
1110
|
+
let bufferLength = 4096;
|
|
1111
|
+
for (let attempt = 0; attempt < 4; attempt += 1) {
|
|
1112
|
+
const out = ["\0".repeat(bufferLength)];
|
|
1113
|
+
const length = fn(...args, out, bufferLength);
|
|
1114
|
+
if (length < 0) throw new Error(`${name} failed with result ${length}.`);
|
|
1115
|
+
const nullIndex = out[0].indexOf("\0");
|
|
1116
|
+
const text = nullIndex >= 0 ? out[0].slice(0, nullIndex) : out[0];
|
|
1117
|
+
if (length < bufferLength - 1) return parseJson(text, fallback);
|
|
1118
|
+
bufferLength = Math.max(bufferLength * 2, length + 1);
|
|
1119
|
+
}
|
|
1120
|
+
throw new Error(`${name} output exceeded the supported buffer size.`);
|
|
1121
|
+
}
|
|
1122
|
+
|
|
847
1123
|
_requireViewer() {
|
|
848
1124
|
if (!this.viewerHandle) {
|
|
849
1125
|
throw new Error("GeoKernel viewer is closed.");
|