GIS Formats Analyzing and Manipulation API
Product Page | Documentation | Demos | Blog | API Reference | Search | Free Support | Temporary License | EULA
Try our free online Apps demonstrating some of the most popular Aspose.GIS functionality.
Aspose.GIS for Python via .NET is a robust API designed for developers to handle geospatial data formats without relying on external GIS software. It facilitates the reading, writing, and conversion of multiple GIS formats, along with rendering maps and performing geometry creation and analysis. This makes it an all-encompassing solution for GIS-related tasks within Python applications. It's crossplatform: Windows, MacOS, MacOS-ARM, Linux are supported.
Aspose.GIS for Python via .NET is an ultimate, flexible, stable and powerful API to work with most kinds of GIS Formats. Aspose.GIS is a cross-platform library, it is Windows x32/x64, Linux x64, and MacOS x64/Arm64 compatible.
Aspose.GIS for Python requires you to use python programming language. For the additional languages please visit Aspose.GIS Family Official Page, we recommend you to check Aspose.GIS for .NET.
Product Features
The following are Aspose.GIS’s core features:
- Support of Vector and Raster GIS Layers
- Reading, Editing and Creating Layers Features
- Database integration
- Built-in configurable rendering of Vector and Raster Images onto Maps
- Geometry Types Analytics Features
- Flexible filtering of Layers, Features and Attributes
- Spatial Reference Systems Convert and Casting Features
- Streams and Remote Storage Support
Supported File Formats
Vector Formats
The following table lists the vector formats that Aspose.GIS for Python can read or write.
Description | Format | Read | Write |
---|
ESRI Shapefile | .shp, .shx, .dbf, .qix, .cpg | ✔️ | ✔️ |
GeoJSON | .json, .geojson | ✔️ | ✔️ |
GeoJSON Seq | .json, .geojson | ✔️ | ✔️ |
ESRI File Geodatabase (FileGDB) | .gdb | ✔️ | ✔️ |
Geography Markup Language | .gml | ✔️ | |
Keyhole Markup Language | .kml | ✔️ | ✔️ |
GPS Exchange Format | .gpx | ✔️ | ✔️ |
TopoJSON | .json, .topojson | ✔️ | ✔️ |
MapInfo Interchange Format | .mif | ✔️ | |
MapInfo TAB format | .tab, .dat, .dbf, .map, .id | ✔️ | ✔️ |
OpenStreetMap (OSM) XML | .osm | ✔️ | ✔️ |
Comma-Separated Values | .csv | ✔️ | ✔️ |
Supported Databases
The following table lists the supported databases. Possible, additional DB are supported, because Aspose.GIS supports unified way to work with DBs. But please note, first version of Aspose.GIS for Python via .NET has some limitation with generic methods, filtering and DB.
| Description | Read | Write |
|---------------------|------|-------|
| Post GIS | ✔️ | ✔️ |
| SQL Server (MS SQL) | ✔️ | ✔️ |
| PostgreSQL | ✔️ | ✔️ |
Raster Formats
The following table lists the raster formats that Aspose.GIS for .NET can only read.
Description | Format | Read |
---|
Geo TIFF, TIFF | .tiff, .tif | ✔️ |
Esri ASCII | .ascii | ✔️ |
World File | (.png, .jpg, .tiff) + .pgw | ✔️ |
Web Tiles
The following web tile formats can be loaded from the Internet.
Format | Description |
---|
XYZ Tiles | Slippy Maps |
Map Rendering Formats
Maps can be rendered into the following formats.
Format | Description |
---|
.SVG | Scalable Vector Graphics |
.PNG | Portable Network Graphics |
.JPG | JPEG |
.BMP | Bitmap Image Files |
Platform Independence
Aspose.GIS for Python can be used to develop applications for a wide range of operating systems, such as Windows (x32/x64), Linux (x64), and MacOS (x64/arm64) where Python 3.5 or later is installed.
The base .NET platform is .NET Standard 2.0
Get Started
Ready to give Aspose.GIS for Python a try?
Simply run pip install aspose-gis-net
from the console to fetch the package. If you already have Aspose.GIS for Python and want to upgrade the version, please run pip install --upgrade aspose-gis-net
to get the latest version.
You can run the following snippets in your environment to see how Aspose.GIS works, or check out the GitHub Repository or Aspose.PSD for Python Documentation for other common use cases.
Convert one GIS format to another
source_format_path = "sample.geojson"
destination_format_path = "output.topojson")
VectorLayer.convert(source_format_path, Drivers.geo_json, destination_format_path, Drivers.topo_json)
Rendering of map from the several Layers
bandColor = BandColor()
bandColor.band_index = 0
bandColor.min = 0
bandColor.max = 255
color = MultiBandColor()
color.red_band = bandColor
with Map(Measurement.pixels(500), Measurement.pixels(500)) as map_instance:
layer = Drivers.geo_tiff.open_layer("raster_float32.tif"))
map_instance.add(layer, color, False)
map_instance.render(output, Renderers.svg)
Create a Layer of specified format from scratch
result = "sample_out.topojson"
with Drivers.topo_json.create_layer(result) as layer:
layer.attributes.add(FeatureAttribute("name", AttributeDataType.STRING))
layer.attributes.add(FeatureAttribute("measurement", AttributeDataType.DOUBLE))
layer.attributes.add(FeatureAttribute("id", AttributeDataType.INTEGER))
feature0 = layer.construct_feature()
feature0.set_value("name", "name_0")
feature0.set_value("measurement", 1.03)
feature0.set_value("id", 0)
feature0.geometry = Point(1.3, 2.3)
layer.add(feature0)
feature1 = layer.construct_feature()
feature1.set_value("name", "name_1")
feature1.set_value("measurement", 10.03)
feature1.set_value("id", 1)
feature1.geometry = Point(241.32, 23.2)
layer.add(feature1)
Get Value Of A Feature Attribute
input = "InputShapeFile.shp"
with VectorLayer.open(input, Drivers.shapefile) as layer:
for i in range(layer.count):
feature = layer[i]
name_value = feature.get_value("name")
age_value = feature.get_value("age")
dob_value = datetime.fromisoformat(feature.get_value("dob")).strftime("%Y-%m-%d")
print(f"Attribute value for feature #{i} is: {name_value}, {age_value}, {dob_value}")
obj_name = feature.get_value("name")
obj_age = feature.get_value("age")
obj_dob = feature.get_value("dob")
print(f"Attribute object for feature #{i} is: {obj_name}, {obj_age}, {obj_dob}")
Iterate Over Geometries In Geometry
point_geometry = Point(40.7128, -74.006)
line_geometry = LineString()
line_geometry.add_point(78.65, -32.65)
line_geometry.add_point(-98.65, 12.65)
geometry_collection = GeometryCollection()
geometry_collection.add(point_geometry)
geometry_collection.add(line_geometry)
for geometry in geometry_collection:
if geometry.geometry_type == GeometryType.POINT:
point = geometry
assert str(point) == "POINT (40.7128 -74.006)"
elif geometry.geometry_type == GeometryType.LINE_STRING:
line = geometry
assert str(line) == "LINESTRING (78.65 -32.65, -98.65 12.65)"
Example of specific GIS operations
polygon = Polygon()
ring = LinearRing()
ring.add_point(1, 0)
ring.add_point(2, 2)
ring.add_point(0, 4)
ring.add_point(5, 5)
ring.add_point(6, 1)
ring.add_point(1, 0)
polygon.exterior_ring = ring
centroid = polygon.get_centroid()
point_on_surface = polygon.get_point_on_surface()
area = multi_polygon.polygon()
Set License Example
from aspose.gis import License
license = License()
licensePath = "PathToLicenseFile"
license.set_license(licensePath)
Product Page | Documentation | Demos | Blog | API Reference | Search | Free Support | Temporary License | EULA