geokernel 1.2.0__tar.gz → 1.2.2__tar.gz

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.
Files changed (122) hide show
  1. {geokernel-1.2.0 → geokernel-1.2.2}/PKG-INFO +1 -1
  2. {geokernel-1.2.0 → geokernel-1.2.2}/pyproject.toml +1 -1
  3. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/__init__.py +6 -0
  4. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/GeoKernel.Core.dll +0 -0
  5. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/GeoKernel.Formats.dll +0 -0
  6. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/GeoKernel.Viewer.dll +0 -0
  7. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/native.py +1 -0
  8. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/routing.py +16 -1
  9. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/types.py +56 -0
  10. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel.egg-info/PKG-INFO +1 -1
  11. {geokernel-1.2.0 → geokernel-1.2.2}/README.md +0 -0
  12. {geokernel-1.2.0 → geokernel-1.2.2}/setup.cfg +0 -0
  13. {geokernel-1.2.0 → geokernel-1.2.2}/setup.py +0 -0
  14. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/NCSEcw.dll +0 -0
  15. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/Qt6Core.dll +0 -0
  16. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/Qt6Gui.dll +0 -0
  17. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/Qt6Network.dll +0 -0
  18. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/Qt6OpenGL.dll +0 -0
  19. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/Qt6OpenGLWidgets.dll +0 -0
  20. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/Qt6Sql.dll +0 -0
  21. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/Qt6Svg.dll +0 -0
  22. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/Qt6Widgets.dll +0 -0
  23. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/LICENSE.TXT +0 -0
  24. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/cubewerx_extra.wkt +0 -0
  25. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/ecw_cs.wkt +0 -0
  26. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/epsg.wkt +0 -0
  27. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/esri_StatePlane_extra.wkt +0 -0
  28. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/gdal_algorithm.schema.json +0 -0
  29. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/gdalinfo_output.schema.json +0 -0
  30. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/gdalmdiminfo_output.schema.json +0 -0
  31. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/gdalvrt.xsd +0 -0
  32. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/gfs.xsd +0 -0
  33. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/gml_registry.xml +0 -0
  34. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/gml_registry.xsd +0 -0
  35. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/inspire_cp_BasicPropertyUnit.gfs +0 -0
  36. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/inspire_cp_CadastralBoundary.gfs +0 -0
  37. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/inspire_cp_CadastralParcel.gfs +0 -0
  38. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/inspire_cp_CadastralZoning.gfs +0 -0
  39. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_AdmArea.gfs +0 -0
  40. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_AdmBdry.gfs +0 -0
  41. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_AdmPt.gfs +0 -0
  42. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_BldA.gfs +0 -0
  43. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_BldL.gfs +0 -0
  44. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_Cntr.gfs +0 -0
  45. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_CommBdry.gfs +0 -0
  46. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_CommPt.gfs +0 -0
  47. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_Cstline.gfs +0 -0
  48. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_ElevPt.gfs +0 -0
  49. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_GCP.gfs +0 -0
  50. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_LeveeEdge.gfs +0 -0
  51. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_RailCL.gfs +0 -0
  52. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_RdASL.gfs +0 -0
  53. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_RdArea.gfs +0 -0
  54. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_RdCompt.gfs +0 -0
  55. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_RdEdg.gfs +0 -0
  56. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_RdMgtBdry.gfs +0 -0
  57. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_RdSgmtA.gfs +0 -0
  58. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_RvrMgtBdry.gfs +0 -0
  59. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_SBAPt.gfs +0 -0
  60. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_SBArea.gfs +0 -0
  61. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_SBBdry.gfs +0 -0
  62. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_WA.gfs +0 -0
  63. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_WL.gfs +0 -0
  64. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_WStrA.gfs +0 -0
  65. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/jpfgdgml_WStrL.gfs +0 -0
  66. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/leaflet_template.html +0 -0
  67. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/ogr_fields_override.schema.json +0 -0
  68. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/ogrinfo_output.schema.json +0 -0
  69. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/ogrvrt.xsd +0 -0
  70. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/osmconf.ini +0 -0
  71. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/ozi_datum.csv +0 -0
  72. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/ozi_ellips.csv +0 -0
  73. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/pci_datum.txt +0 -0
  74. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/pci_ellips.txt +0 -0
  75. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/ruian_vf_ob_v1.gfs +0 -0
  76. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/ruian_vf_st_uvoh_v1.gfs +0 -0
  77. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/ruian_vf_st_v1.gfs +0 -0
  78. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/ruian_vf_v1.gfs +0 -0
  79. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/stateplane.csv +0 -0
  80. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/template_tiles.mapml +0 -0
  81. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/tms_LINZAntarticaMapTileGrid.json +0 -0
  82. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/tms_MapML_APSTILE.json +0 -0
  83. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/tms_MapML_CBMTILE.json +0 -0
  84. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal-data/tms_NZTM2000.json +0 -0
  85. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdal.dll +0 -0
  86. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdalplugins/drivers.ini +0 -0
  87. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdalplugins/gdal_ECW_JP2ECW.dll +0 -0
  88. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdalplugins/gdal_JPEG.dll +0 -0
  89. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdalplugins/gdal_MrSID.dll +0 -0
  90. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdalplugins/gdal_PNG.dll +0 -0
  91. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdalplugins/ogr_Arrow.dll +0 -0
  92. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdalplugins/ogr_LIBKML.dll +0 -0
  93. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdalplugins/ogr_Parquet.dll +0 -0
  94. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/gdalplugins/ogr_XLS.dll +0 -0
  95. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/plugins/iconengines/qsvgicon.dll +0 -0
  96. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/plugins/imageformats/qico.dll +0 -0
  97. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/plugins/imageformats/qjpeg.dll +0 -0
  98. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/plugins/imageformats/qsvg.dll +0 -0
  99. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/plugins/platforms/qwindows.dll +0 -0
  100. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/plugins/tls/qcertonlybackend.dll +0 -0
  101. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/plugins/tls/qopensslbackend.dll +0 -0
  102. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/bin/plugins/tls/qschannelbackend.dll +0 -0
  103. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/controls.py +0 -0
  104. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/crs.py +0 -0
  105. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/diagnostics.py +0 -0
  106. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/dll.py +0 -0
  107. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/editing.py +0 -0
  108. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/geometry.py +0 -0
  109. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/geometry_ops.py +0 -0
  110. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/layer.py +0 -0
  111. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/layers.py +0 -0
  112. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/native_api.py +0 -0
  113. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/navigation.py +0 -0
  114. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/projects.py +0 -0
  115. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/serialization.py +0 -0
  116. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/spatial.py +0 -0
  117. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/styling.py +0 -0
  118. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel/viewer.py +0 -0
  119. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel.egg-info/SOURCES.txt +0 -0
  120. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel.egg-info/dependency_links.txt +0 -0
  121. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel.egg-info/requires.txt +0 -0
  122. {geokernel-1.2.0 → geokernel-1.2.2}/src/geokernel.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geokernel
3
- Version: 1.2.0
3
+ Version: 1.2.2
4
4
  Summary: Python bindings and samples for the GeoKernel GIS SDK.
5
5
  Author-email: GeoKernel <sales@geokernel.io>
6
6
  License-Expression: LicenseRef-Proprietary
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "geokernel"
7
- version = "1.2.0"
7
+ version = "1.2.2"
8
8
  description = "Python bindings and samples for the GeoKernel GIS SDK."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -12,6 +12,9 @@ from .types import (
12
12
  RenderBackendPreference,
13
13
  RouteSummary,
14
14
  RoutingCostMetric,
15
+ RoutingGraphEdge,
16
+ RoutingGraphNode,
17
+ RoutingGraphSnapshot,
15
18
  ScreenRectangle,
16
19
  ShapeType,
17
20
  SpatialIndexType,
@@ -38,6 +41,9 @@ __all__ = [
38
41
  "RenderBackendPreference",
39
42
  "RouteSummary",
40
43
  "RoutingCostMetric",
44
+ "RoutingGraphEdge",
45
+ "RoutingGraphNode",
46
+ "RoutingGraphSnapshot",
41
47
  "ScreenRectangle",
42
48
  "ShapeType",
43
49
  "SpatialIndexType",
@@ -779,6 +779,7 @@ SIGNATURES: dict[str, tuple[str, tuple[str, ...]]] = {
779
779
  "GeoKernelViewer_GetRoutingGraphLayerIndex": ("int", ("void_p",)),
780
780
  "GeoKernelViewer_GetRoutingGraphNodeCount": ("int", ("void_p",)),
781
781
  "GeoKernelViewer_GetRoutingGraphEdgeCount": ("int", ("void_p",)),
782
+ "GeoKernelViewer_GetRoutingGraphJson": ("int", ("void_p", "wchar_p", "int")),
782
783
  "GeoKernelViewer_AddShortestRouteLayerBetweenPoints": (
783
784
  "bool",
784
785
  (
@@ -1,10 +1,11 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import ctypes
4
+ import json
4
5
  import math
5
6
 
6
7
  from .native import GeoKernelRouteSummary
7
- from .types import RouteSummary, RoutingCostMetric
8
+ from .types import RouteSummary, RoutingCostMetric, RoutingGraphSnapshot
8
9
 
9
10
 
10
11
  class RoutingMixin:
@@ -50,6 +51,20 @@ class RoutingMixin:
50
51
  self._require_handle()
51
52
  return int(self._dll.viewer.GeoKernelViewer_GetRoutingGraphEdgeCount(self._handle))
52
53
 
54
+ def get_routing_graph_json(self) -> str:
55
+ return self._read_wide_json(
56
+ self._dll.viewer.GeoKernelViewer_GetRoutingGraphJson
57
+ )
58
+
59
+ def get_routing_graph_snapshot(self) -> RoutingGraphSnapshot | None:
60
+ text = self.get_routing_graph_json()
61
+ if not text:
62
+ return None
63
+ value = json.loads(text)
64
+ if not isinstance(value, dict):
65
+ return None
66
+ return RoutingGraphSnapshot.from_dict(value)
67
+
53
68
  def add_shortest_route_layer_between_points(
54
69
  self,
55
70
  from_world_x: float,
@@ -248,3 +248,59 @@ class RouteSummary:
248
248
  value.to_snap_distance,
249
249
  value.route_layer_index,
250
250
  )
251
+
252
+
253
+ @dataclass(frozen=True)
254
+ class RoutingGraphNode:
255
+ id: int
256
+ position: Point
257
+
258
+ @classmethod
259
+ def from_dict(cls, value: dict[str, object]) -> "RoutingGraphNode":
260
+ return cls(
261
+ id=int(value["id"]),
262
+ position=Point(float(value["x"]), float(value["y"])),
263
+ )
264
+
265
+
266
+ @dataclass(frozen=True)
267
+ class RoutingGraphEdge:
268
+ id: int
269
+ from_id: int
270
+ to_id: int
271
+ distance: float
272
+ speed_kmh: float
273
+ one_way: bool
274
+ geometry: tuple[Point, ...]
275
+ attributes: dict[str, object | None]
276
+
277
+ @classmethod
278
+ def from_dict(cls, value: dict[str, object]) -> "RoutingGraphEdge":
279
+ geometry = value.get("geometry", [])
280
+ attributes = value.get("attributes", {})
281
+ return cls(
282
+ id=int(value["id"]),
283
+ from_id=int(value["from"]),
284
+ to_id=int(value["to"]),
285
+ distance=float(value["distance"]),
286
+ speed_kmh=float(value["speedKmh"]),
287
+ one_way=bool(value["oneWay"]),
288
+ geometry=tuple(
289
+ Point(float(coordinate[0]), float(coordinate[1]))
290
+ for coordinate in geometry
291
+ ),
292
+ attributes=dict(attributes),
293
+ )
294
+
295
+
296
+ @dataclass(frozen=True)
297
+ class RoutingGraphSnapshot:
298
+ nodes: tuple[RoutingGraphNode, ...]
299
+ edges: tuple[RoutingGraphEdge, ...]
300
+
301
+ @classmethod
302
+ def from_dict(cls, value: dict[str, object]) -> "RoutingGraphSnapshot":
303
+ return cls(
304
+ nodes=tuple(RoutingGraphNode.from_dict(node) for node in value.get("nodes", [])),
305
+ edges=tuple(RoutingGraphEdge.from_dict(edge) for edge in value.get("edges", [])),
306
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: geokernel
3
- Version: 1.2.0
3
+ Version: 1.2.2
4
4
  Summary: Python bindings and samples for the GeoKernel GIS SDK.
5
5
  Author-email: GeoKernel <sales@geokernel.io>
6
6
  License-Expression: LicenseRef-Proprietary
File without changes
File without changes
File without changes