Spatial4n 0.4.1.1
dotnet add package Spatial4n --version 0.4.1.1
NuGet\Install-Package Spatial4n -Version 0.4.1.1
<PackageReference Include="Spatial4n" Version="0.4.1.1" />
paket add Spatial4n --version 0.4.1.1
#r "nuget: Spatial4n, 0.4.1.1"
// Install Spatial4n as a Cake Addin #addin nuget:?package=Spatial4n&version=0.4.1.1 // Install Spatial4n as a Cake Tool #tool nuget:?package=Spatial4n&version=0.4.1.1
Spatial4n - A GeoSpatial Library for .NET
Spatial4n is a general purpose spatial / geospatial library for .NET, a direct port of the spatial4j Java library. Its core capabilities are:
- To provide common shapes that can be used in Euclidean and geodesic world models.
- To provide distance calculations and other math.
- To read and write shapes from formats like WKT.
When working with grid square indexing schemes, you will likely to find something especially useful in Spatial4n.
Shapes and Other Features
The main part of Spatial4n is its collection of shapes. Shapes in Spatial4n have these features:
- Compute its lat-lon bounding box.
- Compute an area. For some shapes its more of an estimate.
- Compute if it contains a provided point.
- Compute the relationship to a lat-lon rectangle. Relationships are:
Contains
,Within
,Disjoint
,Intersects
. Note that Spatial4n doesn't have a notion of "touching".
Spatial4n has a variety of shapes that operate in Euclidean-space -- i.e. a flat 2D plane. Most shapes are augmented to support a wrap-around at X
-180/+180 for compatibility with latitude & longitudes, which is effectively a cylindrical model. But the real bonus is its circle (i.e. point-radius shape that can operate on a surface-of-a-sphere model. See below for further info. The term "geodetic" or "geodesic" or "geo" is used here as synonymous with that model but technically those words have a more broad meaning.
Shape | Euclidean | Cylindrical | Spherical |
---|---|---|---|
Point | Y | Y | Y |
Rectangle | Y | Y | Y |
Circle | Y | N | Y |
LineString | Y | N | N |
Buffered L/S | Y | N | N |
Polygon | Y | Y | N |
ShapeCollection | Y | Y | Y |
- The Rectangle shape exists in the spherical model as a lat-lon rectangle, which basically means it's math is no different than cylindrical.
- Polygons don't support pole-wrap (sorry, no Antarctica polygon); just dateline-cross. Polygons are supported by wrapping NTS's
Geometry
, which is to say that most of the fundamental logic for that shape is implemented by NTS.
Other Features
- Read and write Shapes as WKT. Include the ENVELOPE extension from CQL, plus a Spatial4n custom BUFFER operation. Buffering a point gets you a Circle.
- 3 great-circle distance calculators: Law of Cosines, Haversine, Vincenty
Documentation
Currently, the best sources of documentation are the Spatial4j javadocs and the Spatial4j Getting Started section.
Building and Testing
To build the project from source, see the Building and Testing documentation.
Saying Thanks
If you find this library to be useful, please star us on GitHub and consider a financial sponsorship so we can continue bringing you great free tools like this one.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net35 is compatible. net40 is compatible. net403 was computed. net45 was computed. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 3.5
- GeoAPI (>= 1.7.5)
- NetTopologySuite (>= 1.15.0)
-
.NETFramework 4.0
- GeoAPI (>= 1.7.5)
- NetTopologySuite (>= 1.15.0)
-
.NETStandard 2.0
- GeoAPI (>= 1.7.5)
- NetTopologySuite (>= 1.15.0)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on Spatial4n:
Package | Downloads |
---|---|
Lucene.Net.Spatial
Geospatial search for the Lucene.NET full-text search engine library from The Apache Software Foundation. Documentation: https://lucenenet.apache.org/docs/4.8.0-beta00016/api/spatial/Lucene.Net.Spatial.html This package is part of the Lucene.NET project: https://www.nuget.org/packages/Lucene.Net/4.8.0-beta00016 |
|
Lucene.Net.Benchmark
System for benchmarking the Lucene.NET full-text search engine library from The Apache Software Foundation. Documentation: https://lucenenet.apache.org/docs/4.8.0-beta00016/api/benchmark/Lucene.Net.Benchmarks.html This package is part of the Lucene.NET project: https://www.nuget.org/packages/Lucene.Net/4.8.0-beta00016 |
GitHub repositories (2)
Showing the top 2 popular GitHub repositories that depend on Spatial4n:
Repository | Stars |
---|---|
ravendb/ravendb
ACID Document Database
|
|
apache/lucenenet
Apache Lucene.NET
|
Version | Downloads | Last updated |
---|---|---|
0.4.1.1 | 622,729 | 2/11/2022 |