aspose-gis-net 25.7.0__py3-none-win_amd64.whl → 25.9.0__py3-none-win_amd64.whl

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.

Potentially problematic release.


This version of aspose-gis-net might be problematic. Click here for more details.

Files changed (105) hide show
  1. aspose/assemblies/gis/Aspose.GIS.dll +0 -0
  2. aspose/assemblies/gis/Microsoft.Data.Sqlite.dll +0 -0
  3. aspose/assemblies/gis/SQLitePCLRaw.batteries_v2.dll +0 -0
  4. aspose/assemblies/gis/SQLitePCLRaw.core.dll +0 -0
  5. aspose/assemblies/gis/SQLitePCLRaw.provider.e_sqlite3.dll +0 -0
  6. aspose/assemblies/gis/WrpInterop.Aspose.Gis.dll +0 -0
  7. aspose/assemblies/gis/e_sqlite3.dll +0 -0
  8. aspose/gis/__init__.pyi +606 -76
  9. aspose/gis/common/__init__.pyi +101 -9
  10. aspose/gis/common/formats/__init__.pyi +2 -0
  11. aspose/gis/common/formats/dbase/__init__.pyi +21 -0
  12. aspose/gis/common/formats/gdbtable/__init__.pyi +38 -1
  13. aspose/gis/common/formats/mapinfo/__init__.pyi +50 -7
  14. aspose/gis/common/formats/mapinfo/graphicalobjects/__init__.pyi +42 -1
  15. aspose/gis/common/formats/mapinfo/interchangeformat/__init__.pyi +49 -5
  16. aspose/gis/common/formats/mapinfo/styling/__init__.pyi +34 -0
  17. aspose/gis/common/formats/mapinfo/tabformat/__init__.pyi +2 -0
  18. aspose/gis/common/formats/mapinfo/tabformat/map/__init__.pyi +71 -11
  19. aspose/gis/common/formats/wkb/__init__.pyi +2 -0
  20. aspose/gis/common/formats/wkt/__init__.pyi +28 -0
  21. aspose/gis/common/formats/xml/__init__.pyi +14 -0
  22. aspose/gis/common/io/__init__.pyi +33 -8
  23. aspose/gis/epsg/__init__.pyi +71 -0
  24. aspose/gis/formats/__init__.pyi +2 -0
  25. aspose/gis/formats/bmpw/__init__.pyi +2 -0
  26. aspose/gis/formats/csv/__init__.pyi +9 -0
  27. aspose/gis/formats/database/__init__.pyi +5 -0
  28. aspose/gis/formats/database/dataediting/__init__.pyi +2 -0
  29. aspose/gis/formats/database/fromdefinition/__init__.pyi +2 -0
  30. aspose/gis/formats/esriascii/__init__.pyi +6 -0
  31. aspose/gis/formats/esrijson/__init__.pyi +6 -0
  32. aspose/gis/formats/filegdb/__init__.pyi +9 -0
  33. aspose/gis/formats/gdal/__init__.pyi +8 -0
  34. aspose/gis/formats/geojson/__init__.pyi +6 -0
  35. aspose/gis/formats/geojsonseq/__init__.pyi +6 -0
  36. aspose/gis/formats/geopackage/__init__.pyi +746 -0
  37. aspose/gis/formats/geotiff/__init__.pyi +6 -0
  38. aspose/gis/formats/gml/__init__.pyi +6 -0
  39. aspose/gis/formats/gpx/__init__.pyi +6 -0
  40. aspose/gis/formats/infile/__init__.pyi +6 -0
  41. aspose/gis/formats/inmemory/__init__.pyi +2 -0
  42. aspose/gis/formats/jpegw/__init__.pyi +2 -0
  43. aspose/gis/formats/kml/__init__.pyi +526 -0
  44. aspose/gis/formats/kml/specificfields/__init__.pyi +1131 -0
  45. aspose/gis/formats/kml/styles/__init__.pyi +41 -2
  46. aspose/gis/formats/mapinfointerchange/__init__.pyi +6 -0
  47. aspose/gis/formats/mapinfotab/__init__.pyi +6 -0
  48. aspose/gis/formats/osmxml/__init__.pyi +6 -0
  49. aspose/gis/formats/pngw/__init__.pyi +2 -0
  50. aspose/gis/formats/postgis/__init__.pyi +6 -0
  51. aspose/gis/formats/shapefile/__init__.pyi +6 -0
  52. aspose/gis/formats/sqlserver/__init__.pyi +6 -0
  53. aspose/gis/formats/tiffw/__init__.pyi +2 -0
  54. aspose/gis/formats/topojson/__init__.pyi +15 -0
  55. aspose/gis/formats/worldfile/__init__.pyi +2 -0
  56. aspose/gis/formats/xyztile/__init__.pyi +17 -0
  57. aspose/gis/geometries/__init__.pyi +853 -324
  58. aspose/gis/geotools/__init__.pyi +46 -0
  59. aspose/gis/geotools/extensions/__init__.pyi +2 -0
  60. aspose/gis/geotools/layersmap/__init__.pyi +17 -0
  61. aspose/gis/geotools/mapbuilder/__init__.pyi +9 -0
  62. aspose/gis/geotools/wayanalyzer/__init__.pyi +14 -0
  63. aspose/gis/imagemetadata/__init__.pyi +5 -3
  64. aspose/gis/indexing/__init__.pyi +10 -0
  65. aspose/gis/indexing/bplustree/__init__.pyi +5 -0
  66. aspose/gis/indexing/qixtree/__init__.pyi +5 -0
  67. aspose/gis/indexing/rtree/__init__.pyi +5 -0
  68. aspose/gis/labeling/__init__.pyi +34 -0
  69. aspose/gis/labeling/line/__init__.pyi +26 -0
  70. aspose/gis/painting/__init__.pyi +87 -8
  71. aspose/gis/projections/__init__.pyi +16 -0
  72. aspose/gis/raster/__init__.pyi +36 -0
  73. aspose/gis/raster/web/__init__.pyi +8 -0
  74. aspose/gis/relationship/__init__.pyi +2 -0
  75. aspose/gis/relationship/joins/__init__.pyi +10 -0
  76. aspose/gis/rendering/__init__.pyi +126 -10
  77. aspose/gis/rendering/colorizers/__init__.pyi +39 -10
  78. aspose/gis/rendering/formats/__init__.pyi +2 -0
  79. aspose/gis/rendering/formats/bmp/__init__.pyi +2 -0
  80. aspose/gis/rendering/formats/jpeg/__init__.pyi +2 -0
  81. aspose/gis/rendering/formats/png/__init__.pyi +2 -0
  82. aspose/gis/rendering/formats/svg/__init__.pyi +2 -0
  83. aspose/gis/rendering/labelings/__init__.pyi +73 -10
  84. aspose/gis/rendering/sld/__init__.pyi +5 -0
  85. aspose/gis/rendering/symbolizers/__init__.pyi +193 -28
  86. aspose/gis/spatialreferencing/__init__.pyi +504 -154
  87. aspose/gis/topology/__init__.pyi +39 -0
  88. aspose/gis/topology/algorithms/__init__.pyi +2 -0
  89. aspose/gis/topology/buffer/__init__.pyi +8 -0
  90. aspose/gis/topology/graph/__init__.pyi +7 -0
  91. aspose/gis.cp310-win_amd64.pyd +0 -0
  92. aspose/gis.cp311-win_amd64.pyd +0 -0
  93. aspose/gis.cp312-win_amd64.pyd +0 -0
  94. aspose/gis.cp313-win_amd64.pyd +0 -0
  95. aspose/gis.cp35-win_amd64.pyd +0 -0
  96. aspose/gis.cp36-win_amd64.pyd +0 -0
  97. aspose/gis.cp37-win_amd64.pyd +0 -0
  98. aspose/gis.cp38-win_amd64.pyd +0 -0
  99. aspose/gis.cp39-win_amd64.pyd +0 -0
  100. aspose/pydrawing/__init__.pyi +29 -7
  101. {aspose_gis_net-25.7.0.dist-info → aspose_gis_net-25.9.0.dist-info}/METADATA +6 -3
  102. {aspose_gis_net-25.7.0.dist-info → aspose_gis_net-25.9.0.dist-info}/RECORD +106 -102
  103. {aspose_gis_net-25.7.0.dist-info → aspose_gis_net-25.9.0.dist-info}/WHEEL +0 -0
  104. {aspose_gis_net-25.7.0.dist-info → aspose_gis_net-25.9.0.dist-info}/entry_points.txt +0 -0
  105. {aspose_gis_net-25.7.0.dist-info → aspose_gis_net-25.9.0.dist-info}/top_level.txt +0 -0
aspose/gis/__init__.pyi CHANGED
@@ -36,6 +36,7 @@ import aspose.gis.formats.filegdb
36
36
  import aspose.gis.formats.gdal
37
37
  import aspose.gis.formats.geojson
38
38
  import aspose.gis.formats.geojsonseq
39
+ import aspose.gis.formats.geopackage
39
40
  import aspose.gis.formats.geotiff
40
41
  import aspose.gis.formats.gml
41
42
  import aspose.gis.formats.gpx
@@ -43,6 +44,7 @@ import aspose.gis.formats.infile
43
44
  import aspose.gis.formats.inmemory
44
45
  import aspose.gis.formats.jpegw
45
46
  import aspose.gis.formats.kml
47
+ import aspose.gis.formats.kml.specificfields
46
48
  import aspose.gis.formats.kml.styles
47
49
  import aspose.gis.formats.mapinfointerchange
48
50
  import aspose.gis.formats.mapinfotab
@@ -103,11 +105,11 @@ class AbstractPath:
103
105
  raise NotImplementedError()
104
106
 
105
107
  @staticmethod
106
- def from_stream(stream : io.RawIOBase) -> aspose.gis.AbstractPath:
107
- '''Creates an :py:class:`aspose.gis.AbstractPath` from a :py:class:`io.RawIOBase`.
108
+ def from_stream(stream : io._IOBase) -> aspose.gis.AbstractPath:
109
+ '''Creates an :py:class:`aspose.gis.AbstractPath` from a :py:class:`io._IOBase`.
108
110
 
109
111
  :param stream: A stream to create an :py:class:`aspose.gis.AbstractPath` from. ``Aspose.GIS`` does not dispose the stream.
110
- :returns: An instance of :py:class:`aspose.gis.AbstractPath` with the specified :py:class:`io.RawIOBase` as its content.'''
112
+ :returns: An instance of :py:class:`aspose.gis.AbstractPath` with the specified :py:class:`io._IOBase` as its content.'''
111
113
  raise NotImplementedError()
112
114
 
113
115
  def is_file(self) -> bool:
@@ -120,11 +122,11 @@ class AbstractPath:
120
122
  '''Deletes a file pointed to by this path.'''
121
123
  raise NotImplementedError()
122
124
 
123
- def open(self, access : System.IO.FileAccess) -> io.RawIOBase:
125
+ def open(self, access : System.IO.FileAccess) -> io._IOBase:
124
126
  '''Opens this ``AbstractPath`` as a file.
125
127
 
126
- :param access: Specifies a subset of operations that can be performed on a :py:class:`io.RawIOBase`.
127
- :returns: A :py:class:`io.RawIOBase` opened with the specified :py:class:`System.IO.FileAccess`.'''
128
+ :param access: Specifies a subset of operations that can be performed on a :py:class:`io._IOBase`.
129
+ :returns: A :py:class:`io._IOBase` opened with the specified :py:class:`System.IO.FileAccess`.'''
128
130
  raise NotImplementedError()
129
131
 
130
132
  def list_directory(self) -> Iterable[aspose.gis.AbstractPath]:
@@ -184,6 +186,9 @@ class AbstractPath:
184
186
  class AttributesConverterActions:
185
187
  '''Optional actions with attributes of the destination layer.'''
186
188
 
189
+ def __init__(self) -> None:
190
+ raise NotImplementedError()
191
+
187
192
  @property
188
193
  def exclude(self) -> bool:
189
194
  '''Sets to exclude the attribute from the destination layer. The initial value is .'''
@@ -195,9 +200,71 @@ class AttributesConverterActions:
195
200
  raise NotImplementedError()
196
201
 
197
202
 
203
+ class BaseFeatureAttributeCollection:
204
+ '''A :py:class:`aspose.gis.FeatureAttributeCollection` defines what attributes are available for a :py:class:`aspose.gis.Feature`.'''
205
+
206
+ @overload
207
+ def remove(self, name : str) -> None:
208
+ '''Removes the attribute from the collection.
209
+
210
+ :param name: Name of the attribute.'''
211
+ raise NotImplementedError()
212
+
213
+ @overload
214
+ def remove(self, index : int) -> None:
215
+ '''Removes the attribute from the collection.
216
+
217
+ :param index: Index of the attribute.'''
218
+ raise NotImplementedError()
219
+
220
+ def lock(self) -> None:
221
+ '''Locks this attribute collection to prevent further modifications.'''
222
+ raise NotImplementedError()
223
+
224
+ def contains(self, name : str) -> bool:
225
+ '''Determines whether the attribute collection contains an attribute with the specified name.
226
+
227
+ :param name: Name of the attribute.
228
+ :returns: if the attribute collection contains and attribute with the specified name; otherwise, .'''
229
+ raise NotImplementedError()
230
+
231
+ def index_of(self, name : str) -> int:
232
+ '''Searches for the attribute and returns the its zero-based index.
233
+
234
+ :param name: Name of the attribute.
235
+ :returns: The zero-based index of the attribute within the collection, if found; otherwise, –1.'''
236
+ raise NotImplementedError()
237
+
238
+ def add(self, attribute : aspose.gis.FeatureAttribute) -> None:
239
+ '''Adds an attribute to the collection.
240
+
241
+ :param attribute: The attribute to add.'''
242
+ raise NotImplementedError()
243
+
244
+ @property
245
+ def count(self) -> int:
246
+ '''Gets the number of attributes in a :py:class:`aspose.gis.Feature`.'''
247
+ raise NotImplementedError()
248
+
249
+ @property
250
+ def is_locked(self) -> bool:
251
+ '''Gets a value indicating whether this attribute collection is locked.'''
252
+ raise NotImplementedError()
253
+
254
+ def __getitem__(self, key : int) -> aspose.gis.FeatureAttribute:
255
+ '''Gets or sets the :py:class:`aspose.gis.FeatureAttribute` at the specified index.'''
256
+ raise NotImplementedError()
257
+
258
+ def __setitem__(self, key : int, value : aspose.gis.FeatureAttribute):
259
+ raise NotImplementedError()
260
+
261
+
198
262
  class ConversionOptions:
199
263
  '''Options for converting data between formats.'''
200
264
 
265
+ def __init__(self) -> None:
266
+ raise NotImplementedError()
267
+
201
268
  @property
202
269
  def source_driver_options(self) -> aspose.gis.DriverOptions:
203
270
  '''Driver-specific options for the source layer.'''
@@ -762,62 +829,292 @@ class DriverOptions:
762
829
  class Drivers:
763
830
  '''Drivers for all supported formats.'''
764
831
 
765
- esri_json : aspose.gis.formats.esrijson.EsriJsonDriver
766
- '''A driver for the EsriJson format.'''
767
- gdal : aspose.gis.formats.gdal.GdalDriver
768
- '''A driver for the GDAL format.'''
769
- geo_json : aspose.gis.formats.geojson.GeoJsonDriver
770
- '''A driver for the GeoJSON format.'''
771
- geo_json_seq : aspose.gis.formats.geojsonseq.GeoJsonSeqDriver
772
- '''A driver for the GeoJsonSeq: sequence of GeoJSON features.'''
773
- in_memory : aspose.gis.formats.inmemory.InMemoryDriver
774
- '''A driver for work with data in memory.'''
775
- in_file : aspose.gis.formats.infile.InFileDriver
776
- '''A driver for work with data and save changes in file on HDD.'''
777
- kml : aspose.gis.formats.kml.KmlDriver
778
- '''A driver for the KML format.'''
779
- shapefile : aspose.gis.formats.shapefile.ShapefileDriver
780
- '''A driver for the Shapefile format.'''
781
- osm_xml : aspose.gis.formats.osmxml.OsmXmlDriver
782
- '''A driver for the OSM XML format.'''
783
- gpx : aspose.gis.formats.gpx.GpxDriver
784
- '''A driver for the GPX format.'''
785
- gml : aspose.gis.formats.gml.GmlDriver
786
- '''A driver for the GML format.'''
787
- file_gdb : aspose.gis.formats.filegdb.FileGdbDriver
788
- '''A driver for the ESRI File Geodatabase format.'''
789
- topo_json : aspose.gis.formats.topojson.TopoJsonDriver
790
- '''A driver for the TopoJSON format.'''
791
- map_info_interchange : aspose.gis.formats.mapinfointerchange.MapInfoInterchangeDriver
792
- '''A driver for the MapInfo Interchange Format.'''
793
- map_info_tab : aspose.gis.formats.mapinfotab.MapInfoTabDriver
794
- '''A driver for the MapInfo Tab format.'''
795
- post_gis : aspose.gis.formats.postgis.PostGisDriver
796
- '''A driver for the PostGIS database.'''
797
- sql_server : aspose.gis.formats.sqlserver.SqlServerDriver
798
- '''A driver for the SQL Server database.'''
799
- esri_ascii : aspose.gis.formats.esriascii.EsriAsciiDriver
800
- '''A driver for the Esri AscII raster format.'''
801
- geo_tiff : aspose.gis.formats.geotiff.GeoTiffDriver
802
- '''A driver for the GeoTIFF or TIFF raster format.'''
803
- world_raster : aspose.gis.formats.worldfile.WorldRasterDriver
804
- '''A driver for raster.formats with world file'''
805
- jpeg_w : aspose.gis.formats.jpegw.JpegWDriver
806
- '''A driver for the JpegW raster format.'''
807
- png_w : aspose.gis.formats.pngw.PngWDriver
808
- '''A driver for the PngW raster format.'''
809
- bmp_w : aspose.gis.formats.bmpw.BmpWDriver
810
- '''A driver for the BmpW raster format.'''
811
- tiff_w : aspose.gis.formats.tiffw.TiffWDriver
812
- '''A driver for the TiffW raster format.'''
813
- xyz_tiles : aspose.gis.formats.xyztile.XyzTilesDriver
814
- '''A driver for the tiled web map like OpenStreetMaps, Google Maps, etc.'''
815
- csv : aspose.gis.formats.csv.CsvDriver
816
- '''A driver for the CSV format.'''
832
+ @property
833
+ def esri_json(self) -> aspose.gis.formats.esrijson.EsriJsonDriver:
834
+ '''A driver for the EsriJson format.'''
835
+ raise NotImplementedError()
836
+
837
+ @property
838
+ def gdal(self) -> aspose.gis.formats.gdal.GdalDriver:
839
+ '''A driver for the GDAL format.'''
840
+ raise NotImplementedError()
841
+
842
+ @property
843
+ def geo_json(self) -> aspose.gis.formats.geojson.GeoJsonDriver:
844
+ '''A driver for the GeoJSON format.'''
845
+ raise NotImplementedError()
846
+
847
+ @property
848
+ def geo_json_seq(self) -> aspose.gis.formats.geojsonseq.GeoJsonSeqDriver:
849
+ '''A driver for the GeoJsonSeq: sequence of GeoJSON features.'''
850
+ raise NotImplementedError()
851
+
852
+ @property
853
+ def in_memory(self) -> aspose.gis.formats.inmemory.InMemoryDriver:
854
+ '''A driver for work with data in memory.'''
855
+ raise NotImplementedError()
856
+
857
+ @property
858
+ def in_file(self) -> aspose.gis.formats.infile.InFileDriver:
859
+ '''A driver for work with data and save changes in file on HDD.'''
860
+ raise NotImplementedError()
861
+
862
+ @property
863
+ def kml(self) -> aspose.gis.formats.kml.KmlDriver:
864
+ '''A driver for the KML format.'''
865
+ raise NotImplementedError()
866
+
867
+ @property
868
+ def shapefile(self) -> aspose.gis.formats.shapefile.ShapefileDriver:
869
+ '''A driver for the Shapefile format.'''
870
+ raise NotImplementedError()
871
+
872
+ @property
873
+ def osm_xml(self) -> aspose.gis.formats.osmxml.OsmXmlDriver:
874
+ '''A driver for the OSM XML format.'''
875
+ raise NotImplementedError()
876
+
877
+ @property
878
+ def gpx(self) -> aspose.gis.formats.gpx.GpxDriver:
879
+ '''A driver for the GPX format.'''
880
+ raise NotImplementedError()
881
+
882
+ @property
883
+ def gml(self) -> aspose.gis.formats.gml.GmlDriver:
884
+ '''A driver for the GML format.'''
885
+ raise NotImplementedError()
886
+
887
+ @property
888
+ def file_gdb(self) -> aspose.gis.formats.filegdb.FileGdbDriver:
889
+ '''A driver for the ESRI File Geodatabase format.'''
890
+ raise NotImplementedError()
891
+
892
+ @property
893
+ def topo_json(self) -> aspose.gis.formats.topojson.TopoJsonDriver:
894
+ '''A driver for the TopoJSON format.'''
895
+ raise NotImplementedError()
896
+
897
+ @property
898
+ def map_info_interchange(self) -> aspose.gis.formats.mapinfointerchange.MapInfoInterchangeDriver:
899
+ '''A driver for the MapInfo Interchange Format.'''
900
+ raise NotImplementedError()
901
+
902
+ @property
903
+ def map_info_tab(self) -> aspose.gis.formats.mapinfotab.MapInfoTabDriver:
904
+ '''A driver for the MapInfo Tab format.'''
905
+ raise NotImplementedError()
906
+
907
+ @property
908
+ def post_gis(self) -> aspose.gis.formats.postgis.PostGisDriver:
909
+ '''A driver for the PostGIS database.'''
910
+ raise NotImplementedError()
911
+
912
+ @property
913
+ def sql_server(self) -> aspose.gis.formats.sqlserver.SqlServerDriver:
914
+ '''A driver for the SQL Server database.'''
915
+ raise NotImplementedError()
916
+
917
+ @property
918
+ def esri_ascii(self) -> aspose.gis.formats.esriascii.EsriAsciiDriver:
919
+ '''A driver for the Esri AscII raster format.'''
920
+ raise NotImplementedError()
921
+
922
+ @property
923
+ def geo_tiff(self) -> aspose.gis.formats.geotiff.GeoTiffDriver:
924
+ '''A driver for the GeoTIFF or TIFF raster format.'''
925
+ raise NotImplementedError()
926
+
927
+ @property
928
+ def world_raster(self) -> aspose.gis.formats.worldfile.WorldRasterDriver:
929
+ '''A driver for raster.formats with world file'''
930
+ raise NotImplementedError()
931
+
932
+ @property
933
+ def jpeg_w(self) -> aspose.gis.formats.jpegw.JpegWDriver:
934
+ '''A driver for the JpegW raster format.'''
935
+ raise NotImplementedError()
936
+
937
+ @property
938
+ def png_w(self) -> aspose.gis.formats.pngw.PngWDriver:
939
+ '''A driver for the PngW raster format.'''
940
+ raise NotImplementedError()
941
+
942
+ @property
943
+ def bmp_w(self) -> aspose.gis.formats.bmpw.BmpWDriver:
944
+ '''A driver for the BmpW raster format.'''
945
+ raise NotImplementedError()
946
+
947
+ @property
948
+ def tiff_w(self) -> aspose.gis.formats.tiffw.TiffWDriver:
949
+ '''A driver for the TiffW raster format.'''
950
+ raise NotImplementedError()
951
+
952
+ @property
953
+ def xyz_tiles(self) -> aspose.gis.formats.xyztile.XyzTilesDriver:
954
+ '''A driver for the tiled web map like OpenStreetMaps, Google Maps, etc.'''
955
+ raise NotImplementedError()
956
+
957
+ @property
958
+ def csv(self) -> aspose.gis.formats.csv.CsvDriver:
959
+ '''A driver for the CSV format.'''
960
+ raise NotImplementedError()
961
+
962
+ @property
963
+ def geo_package(self) -> aspose.gis.formats.geopackage.GeoPackageDriver:
964
+ '''A driver for the GeoPackage format.'''
965
+ raise NotImplementedError()
966
+
967
+
968
+ class DynamicFeature(Feature):
969
+ '''A geographic feature composed of a geometry and user-defined attributes.'''
970
+
971
+ @overload
972
+ def get_values(self, values : List[Any], default_value : Any) -> int:
973
+ '''Returns the values for all the attributes in an array.
974
+
975
+ :param values: The array into which to copy the attributes values.
976
+ :param default_value: The value to return if the attribute value is missing (unset). Default value is .
977
+ Consider to use \':py:class:`System.DBNull`.Value\' for separating \'unset\' and \'\' values.
978
+ :returns: A number of attributes copied.'''
979
+ raise NotImplementedError()
980
+
981
+ @overload
982
+ def get_values(self, values_count : int, default_value : Any) -> List[Any]:
983
+ '''Returns the values for all the attributes in an array.
984
+
985
+ :param values_count: The values count.
986
+ :param default_value: The value to return if the attribute value is missing (unset). Default value is .
987
+ Consider to use \':py:class:`System.DBNull`.Value\' for separating \'unset\' and \'\' values.
988
+ :returns: A number of attributes copied.'''
989
+ raise NotImplementedError()
990
+
991
+ def get_value(self, attribute_name : str) -> Any:
992
+ '''Gets the value of an attribute.
993
+
994
+ :param attribute_name: Name of the attribute.
995
+ :returns: Value of the attribute.'''
996
+ raise NotImplementedError()
997
+
998
+ def get_values_list(self, attribute_name : str, separator : str, count : int) -> List[Any]:
999
+ '''Gets the values list. Non-generic analog of List T GetValuesList
1000
+
1001
+ :param attribute_name: Name of the attribute.
1002
+ :param separator: A string which is used to separate attribute name and index value of sequence.
1003
+ :param count: Count of values to return (missed value fill as null)
1004
+ :returns: List of values of the attributes which names different by sequence index value.'''
1005
+ raise NotImplementedError()
1006
+
1007
+ def get_value_or_default(self, attribute_name : str, default_value : Any) -> Any:
1008
+ '''Gets the value of an attribute, or :py:attr:`aspose.gis.FeatureAttribute.default_value` if the value is unset or ``null``.
1009
+
1010
+ :param attribute_name: Name of the attribute.
1011
+ :param default_value: The value to return if the attribute value is missing. Default value is .
1012
+ :returns: Value of the attribute.'''
1013
+ raise NotImplementedError()
1014
+
1015
+ def set_value(self, attribute_name : str, value : Any) -> None:
1016
+ '''Sets the value. Non-generic analog of void SetValue (string attributeName, T value)
1017
+
1018
+ :param attribute_name: The name of the attribute.
1019
+ :param value: The value of the attribute.'''
1020
+ raise NotImplementedError()
1021
+
1022
+ def is_value_null(self, attribute_name : str) -> bool:
1023
+ '''Determines whether the specified attribute has been explicitly set to ``null`` value.
1024
+
1025
+ :param attribute_name: Name of the attribute.
1026
+ :returns: if the attribute value is ``null``; otherwise, .'''
1027
+ raise NotImplementedError()
1028
+
1029
+ def set_value_null(self, attribute_name : str) -> None:
1030
+ '''Sets value of the attribute to ``null``.
1031
+
1032
+ :param attribute_name: The name of the attribute.'''
1033
+ raise NotImplementedError()
1034
+
1035
+ def unset_value(self, attribute_name : str) -> None:
1036
+ '''Removes the attribute value from this feature.
1037
+
1038
+ :param attribute_name: Name of the attribute.'''
1039
+ raise NotImplementedError()
1040
+
1041
+ def is_value_set(self, attribute_name : str) -> bool:
1042
+ '''Checks if the attribute value is set in this feature.
1043
+
1044
+ :param attribute_name: Name of the attribute.
1045
+ :returns: if value for the specified attribute is set; otherwise, .'''
1046
+ raise NotImplementedError()
1047
+
1048
+ def copy_values(self, input_feature : aspose.gis.Feature) -> None:
1049
+ '''Copies values of attributes from another feature.
1050
+
1051
+ :param input_feature: The feature to copy values from.'''
1052
+ raise NotImplementedError()
1053
+
1054
+ def get_values_dump(self, default_value : Any) -> List[Any]:
1055
+ '''Returns the values for all the attributes in an array.
1056
+ Consider to use :py:func:`aspose.gis.DynamicFeature.get_values` method to avoid additional memory allocation.
1057
+
1058
+ :param default_value: The value to return if the attribute value is missing (unset). Default value is .
1059
+ Consider to use \':py:class:`System.DBNull`.Value\' for separating \'unset\' and \'\' values.
1060
+ :returns: A new array into which to copy the attributes values.'''
1061
+ raise NotImplementedError()
1062
+
1063
+ def set_values(self, values : List[Any]) -> int:
1064
+ '''Sets new values for all of the attributes.
1065
+ Also consider to use :py:func:`aspose.gis.DynamicFeature.copy_values` method to streamline setting values in one call.
1066
+
1067
+ :param values: The array of new values.
1068
+ :returns: The number of attribute values set.'''
1069
+ raise NotImplementedError()
1070
+
1071
+ def get_as_node(self) -> aspose.gis.NodeLink:
1072
+ '''Gets the feature as node. This can be helpful for the custom data
1073
+
1074
+ :returns: The NodeLink to feature'''
1075
+ raise NotImplementedError()
1076
+
1077
+ @property
1078
+ def geometry(self) -> aspose.gis.geometries.IGeometry:
1079
+ '''Gets geometry of the feature.
1080
+ Cannot be , use :py:attr:`aspose.gis.geometries.Geometry.null` to indicate missing geometry.'''
1081
+ raise NotImplementedError()
1082
+
1083
+ @geometry.setter
1084
+ def geometry(self, value : aspose.gis.geometries.IGeometry) -> None:
1085
+ '''Sets geometry of the feature.
1086
+ Cannot be , use :py:attr:`aspose.gis.geometries.Geometry.null` to indicate missing geometry.'''
1087
+ raise NotImplementedError()
1088
+
817
1089
 
818
1090
  class Extent:
819
1091
  '''A two-dimensional spatial bounding box.'''
820
1092
 
1093
+ @overload
1094
+ def __init__(self) -> None:
1095
+ '''Creates new instance.'''
1096
+ raise NotImplementedError()
1097
+
1098
+ @overload
1099
+ def __init__(self, srs : aspose.gis.spatialreferencing.SpatialReferenceSystem) -> None:
1100
+ '''Creates new instance.
1101
+
1102
+ :param srs: :py:class:`aspose.gis.spatialreferencing.SpatialReferenceSystem` associated with this extent.
1103
+ Can be to indicate that SRS is unknown.'''
1104
+ raise NotImplementedError()
1105
+
1106
+ @overload
1107
+ def __init__(self, x_min : float, y_min : float, x_max : float, y_max : float, srs : aspose.gis.spatialreferencing.SpatialReferenceSystem) -> None:
1108
+ '''Creates new instance.
1109
+
1110
+ :param x_min: Minimum X value.
1111
+ :param y_min: Minimum Y value.
1112
+ :param x_max: Maximum X value.
1113
+ :param y_max: Maximum Y value.
1114
+ :param srs: :py:class:`aspose.gis.spatialreferencing.SpatialReferenceSystem` associated with this extent.
1115
+ Can be to indicate that SRS is unknown.'''
1116
+ raise NotImplementedError()
1117
+
821
1118
  @overload
822
1119
  def grow(self, extent : aspose.gis.Extent) -> None:
823
1120
  '''Grows this extent so it includes the argument.
@@ -1114,6 +1411,23 @@ class Feature:
1114
1411
  class FeatureAttribute:
1115
1412
  '''An attribute of a :py:class:`aspose.gis.Feature`.'''
1116
1413
 
1414
+ @overload
1415
+ def __init__(self, name : str, data_type : aspose.gis.AttributeDataType) -> None:
1416
+ '''Initializes a new instance of the :py:class:`aspose.gis.FeatureAttribute` class.
1417
+
1418
+ :param name: The name of the attribute.
1419
+ :param data_type: The data type of the attribute.'''
1420
+ raise NotImplementedError()
1421
+
1422
+ @overload
1423
+ def __init__(self, name : str, data_type : aspose.gis.AttributeDataType, can_be_null : bool) -> None:
1424
+ '''Initializes a new instance of the :py:class:`aspose.gis.FeatureAttribute` class.
1425
+
1426
+ :param name: The name of the attribute.
1427
+ :param data_type: The data type of the attribute.
1428
+ :param can_be_null: if this instance can be null; otherwise, .'''
1429
+ raise NotImplementedError()
1430
+
1117
1431
  def lock(self) -> None:
1118
1432
  '''Locks this attribute.'''
1119
1433
  raise NotImplementedError()
@@ -1209,7 +1523,7 @@ class FeatureAttribute:
1209
1523
  raise NotImplementedError()
1210
1524
 
1211
1525
 
1212
- class FeatureAttributeCollection:
1526
+ class FeatureAttributeCollection(BaseFeatureAttributeCollection):
1213
1527
  '''A :py:class:`aspose.gis.FeatureAttributeCollection` defines what attributes are available for a :py:class:`aspose.gis.Feature`.'''
1214
1528
 
1215
1529
  @overload
@@ -1261,7 +1575,6 @@ class FeatureAttributeCollection:
1261
1575
  raise NotImplementedError()
1262
1576
 
1263
1577
  def __getitem__(self, key : int) -> aspose.gis.FeatureAttribute:
1264
- '''Gets or sets the :py:class:`aspose.gis.FeatureAttribute` at the specified index.'''
1265
1578
  raise NotImplementedError()
1266
1579
 
1267
1580
  def __setitem__(self, key : int, value : aspose.gis.FeatureAttribute):
@@ -1271,8 +1584,11 @@ class FeatureAttributeCollection:
1271
1584
  class FeatureStyle(IFeatureStyle):
1272
1585
  '''The abstract root class of the feature styles hierarchy.'''
1273
1586
 
1274
- null : aspose.gis.IFeatureStyle
1275
- '''Gets an instance of null style.'''
1587
+ @property
1588
+ def null(self) -> aspose.gis.IFeatureStyle:
1589
+ '''Gets an instance of null style.'''
1590
+ raise NotImplementedError()
1591
+
1276
1592
 
1277
1593
  class FeaturesSequence:
1278
1594
  ''':py:class:`aspose.gis.FeaturesSequence` represents a set of vector features.'''
@@ -1429,7 +1745,7 @@ class FeaturesSequence:
1429
1745
  raise NotImplementedError()
1430
1746
 
1431
1747
  @property
1432
- def attributes(self) -> aspose.gis.FeatureAttributeCollection:
1748
+ def attributes(self) -> aspose.gis.BaseFeatureAttributeCollection:
1433
1749
  '''Gets the collection of custom attributes for features in this :py:class:`aspose.gis.VectorLayer`.'''
1434
1750
  raise NotImplementedError()
1435
1751
 
@@ -1707,6 +2023,18 @@ class GeoConvert:
1707
2023
  class GisException:
1708
2024
  '''The exception that is thrown when an error occurs during GIS data processing.'''
1709
2025
 
2026
+ @overload
2027
+ def __init__(self) -> None:
2028
+ '''Initializes a new instance of the :py:class:`aspose.gis.GisException` class.'''
2029
+ raise NotImplementedError()
2030
+
2031
+ @overload
2032
+ def __init__(self, message : str) -> None:
2033
+ '''Initializes a new instance of the :py:class:`aspose.gis.GisException` class.
2034
+
2035
+ :param message: The message that describes the error.'''
2036
+ raise NotImplementedError()
2037
+
1710
2038
 
1711
2039
  class IAttributesConverter:
1712
2040
  '''A custom converter for layer attributes.'''
@@ -1727,13 +2055,17 @@ class IFeatureStyle:
1727
2055
  class License:
1728
2056
  '''Provides methods to license the component.'''
1729
2057
 
2058
+ def __init__(self) -> None:
2059
+ '''Initializes a new instance of this class.'''
2060
+ raise NotImplementedError()
2061
+
1730
2062
  @overload
1731
2063
  def set_license(self, license_name : str) -> None:
1732
2064
  '''Licenses the component.'''
1733
2065
  raise NotImplementedError()
1734
2066
 
1735
2067
  @overload
1736
- def set_license(self, stream : io.RawIOBase) -> None:
2068
+ def set_license(self, stream : io._IOBase) -> None:
1737
2069
  '''Licenses the component.
1738
2070
 
1739
2071
  :param stream: A stream that contains the license.'''
@@ -1774,6 +2106,14 @@ class Metered:
1774
2106
  class MultiStreamPath(AbstractPath):
1775
2107
  '''This class works with formats which contains several files.'''
1776
2108
 
2109
+ def __init__(self, entry_file_name : str, file_names : List[str], streams : List[io._IOBase]) -> None:
2110
+ '''Initializes a new instance of the :py:class:`aspose.gis.MultiStreamPath` class.
2111
+
2112
+ :param entry_file_name: Name of the entry file.
2113
+ :param file_names: The file names.
2114
+ :param streams: The streams.'''
2115
+ raise NotImplementedError()
2116
+
1777
2117
  @staticmethod
1778
2118
  def from_local_path(path : str) -> aspose.gis.AbstractPath:
1779
2119
  '''Creates an :py:class:`aspose.gis.AbstractPath` that represents a location on the local filesystem.
@@ -1783,11 +2123,11 @@ class MultiStreamPath(AbstractPath):
1783
2123
  raise NotImplementedError()
1784
2124
 
1785
2125
  @staticmethod
1786
- def from_stream(stream : io.RawIOBase) -> aspose.gis.AbstractPath:
1787
- '''Creates an :py:class:`aspose.gis.AbstractPath` from a :py:class:`io.RawIOBase`.
2126
+ def from_stream(stream : io._IOBase) -> aspose.gis.AbstractPath:
2127
+ '''Creates an :py:class:`aspose.gis.AbstractPath` from a :py:class:`io._IOBase`.
1788
2128
 
1789
2129
  :param stream: A stream to create an :py:class:`aspose.gis.AbstractPath` from. ``Aspose.GIS`` does not dispose the stream.
1790
- :returns: An instance of :py:class:`aspose.gis.AbstractPath` with the specified :py:class:`io.RawIOBase` as its content.'''
2130
+ :returns: An instance of :py:class:`aspose.gis.AbstractPath` with the specified :py:class:`io._IOBase` as its content.'''
1791
2131
  raise NotImplementedError()
1792
2132
 
1793
2133
  def is_file(self) -> bool:
@@ -1800,10 +2140,10 @@ class MultiStreamPath(AbstractPath):
1800
2140
  '''Deletes a file pointed to by this path.'''
1801
2141
  raise NotImplementedError()
1802
2142
 
1803
- def open(self, access : System.IO.FileAccess) -> io.RawIOBase:
2143
+ def open(self, access : System.IO.FileAccess) -> io._IOBase:
1804
2144
  '''Abstracts a set of open streaming multi-file formats a path for accessing data.
1805
2145
 
1806
- :param access: Specifies a subset of operations that can be performed on a :py:class:`io.RawIOBase`.
2146
+ :param access: Specifies a subset of operations that can be performed on a :py:class:`io._IOBase`.
1807
2147
  :returns: This can be either a :py:class:`System.IO.MemoryStream` or the stream originally passed by the client.'''
1808
2148
  raise NotImplementedError()
1809
2149
 
@@ -1861,6 +2201,88 @@ class MultiStreamPath(AbstractPath):
1861
2201
  raise NotImplementedError()
1862
2202
 
1863
2203
 
2204
+ class NodeLink:
2205
+ '''Node-based link to the parts of resources'''
2206
+
2207
+ def get_node_by_name(self, name : str) -> aspose.gis.NodeLink:
2208
+ '''Gets the node by name. Please note, this method will return the first found Node.
2209
+ Doesn\'t matter in what level it will be found
2210
+
2211
+ :param name: The name of the node you want to find.
2212
+ :returns: The found node with NodeLink API'''
2213
+ raise NotImplementedError()
2214
+
2215
+ def get_nodes_by_name(self, names : List[str]) -> List[aspose.gis.NodeLink]:
2216
+ '''Gets the all nodes with the specified name.
2217
+ Doesn\'t matter in what level it will be found
2218
+
2219
+ :param names: The names.
2220
+ :returns: The array of found nodes.'''
2221
+ raise NotImplementedError()
2222
+
2223
+ def as_double(self) -> float:
2224
+ '''Returns value casted to the double.
2225
+
2226
+ :returns: The double value of node'''
2227
+ raise NotImplementedError()
2228
+
2229
+ def as_int(self) -> int:
2230
+ '''Returns value casted to the int.
2231
+
2232
+ :returns: The int value of node'''
2233
+ raise NotImplementedError()
2234
+
2235
+ def as_bool(self) -> bool:
2236
+ '''Returns value casted to the bool
2237
+
2238
+ :returns: The bool value of node'''
2239
+ raise NotImplementedError()
2240
+
2241
+ def get_node_content(self) -> str:
2242
+ '''Gets the content of the node.
2243
+
2244
+ :returns: The content of node'''
2245
+ raise NotImplementedError()
2246
+
2247
+ def find_nodes_by_name(self, name : str) -> List[aspose.gis.NodeLink]:
2248
+ '''Finds the nodes by the name
2249
+
2250
+ :param name: The name of the node
2251
+ :returns: Array of Nodes of format by name'''
2252
+ raise NotImplementedError()
2253
+
2254
+ def add_child(self, child : aspose.gis.NodeLink) -> None:
2255
+ '''Adds the child.
2256
+
2257
+ :param child: The child.'''
2258
+ raise NotImplementedError()
2259
+
2260
+ @property
2261
+ def node_name(self) -> str:
2262
+ '''Gets the name.'''
2263
+ raise NotImplementedError()
2264
+
2265
+ @node_name.setter
2266
+ def node_name(self, value : str) -> None:
2267
+ '''Sets the name.'''
2268
+ raise NotImplementedError()
2269
+
2270
+ @property
2271
+ def node_value(self) -> str:
2272
+ '''Gets the value.'''
2273
+ raise NotImplementedError()
2274
+
2275
+ @node_value.setter
2276
+ def node_value(self, value : str) -> None:
2277
+ '''Sets the value.'''
2278
+ raise NotImplementedError()
2279
+
2280
+ @property
2281
+ def children(self) -> List[aspose.gis.NodeLink]:
2282
+ '''Gets the children.'''
2283
+ raise NotImplementedError()
2284
+
2285
+
1864
2286
  class NumericFormat:
1865
2287
  ''':py:class:`aspose.gis.NumericFormat` are used to format common numeric types in text.'''
1866
2288
 
@@ -1882,9 +2304,12 @@ class NumericFormat:
1882
2304
  :returns: The Rounding Precision Specifier.'''
1883
2305
  raise NotImplementedError()
1884
2306
 
1885
- round_trip : aspose.gis.NumericFormat
1886
- '''Converts and attempts to ensure that a numeric value that is converted to
1887
- a string is parsed back into the same numeric value.'''
2307
+ @property
2308
+ def round_trip(self) -> aspose.gis.NumericFormat:
2309
+ '''Converts and attempts to ensure that a numeric value that is converted to
2310
+ a string is parsed back into the same numeric value.'''
2311
+ raise NotImplementedError()
2312
+
1888
2313
 
1889
2314
  class PrecisionModel:
1890
2315
  ''':py:class:`aspose.gis.PrecisionModel` specifies a number of significant digits in a coordinate.'''
@@ -1905,9 +2330,12 @@ class PrecisionModel:
1905
2330
  :returns: true if the current object is equal to the ``other`` parameter; otherwise, false.'''
1906
2331
  raise NotImplementedError()
1907
2332
 
1908
- exact : aspose.gis.PrecisionModel
1909
- '''Returns an exact precision model.
1910
- According to exact precision model all digits in a double value are significant.'''
2333
+ @property
2334
+ def exact(self) -> aspose.gis.PrecisionModel:
2335
+ '''Returns an exact precision model.
2336
+ According to exact precision model all digits in a double value are significant.'''
2337
+ raise NotImplementedError()
2338
+
1911
2339
  @property
1912
2340
  def is_exact(self) -> bool:
1913
2341
  '''Gets a value indicating whether this precision model is exact.'''
@@ -2110,6 +2538,9 @@ class RasterDriverOptions(DriverOptions):
2110
2538
  class SavingOptions:
2111
2539
  '''Options for saving :py:class:`aspose.gis.FeaturesSequence` to file.'''
2112
2540
 
2541
+ def __init__(self) -> None:
2542
+ raise NotImplementedError()
2543
+
2113
2544
  @property
2114
2545
  def driver_options(self) -> aspose.gis.DriverOptions:
2115
2546
  '''Driver-specific options for the output layer.'''
@@ -2592,6 +3023,13 @@ class VectorLayer(FeaturesSequence):
2592
3023
  :returns: A new layer as a result of join two layers.'''
2593
3024
  raise NotImplementedError()
2594
3025
 
3026
+ def intersection_by_geometry(self, layer : aspose.gis.VectorLayer) -> aspose.gis.VectorLayer:
3027
+ '''Intersect a layer to the current layer by geometry.
3028
+
3029
+ :param layer: A layer to intersect.
3030
+ :returns: A new layer as a result of intersection two layers.'''
3031
+ raise NotImplementedError()
3032
+
2595
3033
  def as_in_memory(self) -> aspose.gis.VectorLayer:
2596
3034
  '''Create a layer clon as the InMemory format.
2597
3035
 
@@ -2604,7 +3042,7 @@ class VectorLayer(FeaturesSequence):
2604
3042
  raise NotImplementedError()
2605
3043
 
2606
3044
  @property
2607
- def attributes(self) -> aspose.gis.FeatureAttributeCollection:
3045
+ def attributes(self) -> aspose.gis.BaseFeatureAttributeCollection:
2608
3046
  '''Gets the collection of custom attributes for features in this :py:class:`aspose.gis.VectorLayer`.'''
2609
3047
  raise NotImplementedError()
2610
3048
 
@@ -2628,6 +3066,98 @@ class VectorLayer(FeaturesSequence):
2628
3066
  raise NotImplementedError()
2629
3067
 
2630
3068
 
3069
+ class XmlNodeLink(NodeLink):
3070
+ '''XML Node-Based links to parts of sources'''
3071
+
3072
+ def get_node_by_name(self, name : str) -> aspose.gis.NodeLink:
3073
+ '''Gets the node by name. Please note, this method will return the first found Node.
3074
+ Doesn\'t matter in what level it will be found
3075
+
3076
+ :param name: The name of the node you want to find.
3077
+ :returns: The found node with NodeLink API'''
3078
+ raise NotImplementedError()
3079
+
3080
+ def get_nodes_by_name(self, names : List[str]) -> List[aspose.gis.NodeLink]:
3081
+ '''Gets the all nodes with the specified name.
3082
+ Doesn\'t matter in what level it will be found
3083
+
3084
+ :param names: The names.
3085
+ :returns: The array of found nodes.'''
3086
+ raise NotImplementedError()
3087
+
3088
+ def as_double(self) -> float:
3089
+ '''Returns value casted to the double.
3090
+
3091
+ :returns: The double value of node'''
3092
+ raise NotImplementedError()
3093
+
3094
+ def as_int(self) -> int:
3095
+ '''Returns value casted to the int.
3096
+
3097
+ :returns: The int value of node'''
3098
+ raise NotImplementedError()
3099
+
3100
+ def as_bool(self) -> bool:
3101
+ '''Returns value casted to the bool
3102
+
3103
+ :returns: The bool value of node'''
3104
+ raise NotImplementedError()
3105
+
3106
+ def get_node_content(self) -> str:
3107
+ '''Gets the content of the node.
3108
+
3109
+ :returns: The content of node'''
3110
+ raise NotImplementedError()
3111
+
3112
+ def find_nodes_by_name(self, name : str) -> List[aspose.gis.NodeLink]:
3113
+ '''Finds the XML nodes by the name
3114
+
3115
+ :param name: The name of the node
3116
+ :returns: Array of XML Nodes by name'''
3117
+ raise NotImplementedError()
3118
+
3119
+ def add_child(self, child : aspose.gis.NodeLink) -> None:
3120
+ '''Adds the child.
3121
+
3122
+ :param child: The child.'''
3123
+ raise NotImplementedError()
3124
+
3125
+ @property
3126
+ def node_name(self) -> str:
3127
+ '''Gets the name.'''
3128
+ raise NotImplementedError()
3129
+
3130
+ @node_name.setter
3131
+ def node_name(self, value : str) -> None:
3132
+ '''Sets the name.'''
3133
+ raise NotImplementedError()
3134
+
3135
+ @property
3136
+ def node_value(self) -> str:
3137
+ '''Gets the value.'''
3138
+ raise NotImplementedError()
3139
+
3140
+ @node_value.setter
3141
+ def node_value(self, value : str) -> None:
3142
+ '''Sets the value.'''
3143
+ raise NotImplementedError()
3144
+
3145
+ @property
3146
+ def children(self) -> List[aspose.gis.NodeLink]:
3147
+ '''Gets the children.'''
3148
+ raise NotImplementedError()
3149
+
3150
+ @property
3151
+ def name_without_prefix(self) -> str:
3152
+ '''Gets the name without prefix.'''
3153
+ raise NotImplementedError()
3154
+
3155
+ @property
3156
+ def prefix(self) -> str:
3157
+ '''Gets the prefix.'''
3158
+ raise NotImplementedError()
3159
+
3160
+
2631
3161
  class AttributeDataType:
2632
3162
  '''The data type of a feature attribute.'''
2633
3163