{"id":46659117,"url":"https://github.com/hosseinnarimanirad/maptor","last_synced_at":"2026-04-18T19:02:06.589Z","repository":{"id":40864384,"uuid":"106668232","full_name":"hosseinnarimanirad/Maptor","owner":"hosseinnarimanirad","description":"Maptor (MakanNegar): Open-source .NET GIS library for spatial data processing, analysis, and visualization","archived":false,"fork":false,"pushed_at":"2026-04-10T11:13:46.000Z","size":122470,"stargazers_count":22,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-10T13:16:17.622Z","etag":null,"topics":["cartography","geodesy","geographic-information-systems","geography","geomatics","geometry","geospatial","gis","map","spatial","spatial-analysis","spatial-data","surveying"],"latest_commit_sha":null,"homepage":"https://www.nuget.org/profiles/narimanirad","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hosseinnarimanirad.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2017-10-12T08:50:20.000Z","updated_at":"2026-03-17T05:06:52.000Z","dependencies_parsed_at":"2025-09-05T09:12:48.874Z","dependency_job_id":"ec47daeb-57f1-4bf8-8b3e-0c4c087813ae","html_url":"https://github.com/hosseinnarimanirad/Maptor","commit_stats":{"total_commits":377,"total_committers":3,"mean_commits":"125.66666666666667","dds":0.03183023872679047,"last_synced_commit":"19945b3869add577b716651fb5c3506b7ae846b2"},"previous_names":["hosseinnarimanirad/maptor","hosseinnarimanirad/iri.japey"],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/hosseinnarimanirad/Maptor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hosseinnarimanirad%2FMaptor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hosseinnarimanirad%2FMaptor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hosseinnarimanirad%2FMaptor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hosseinnarimanirad%2FMaptor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hosseinnarimanirad","download_url":"https://codeload.github.com/hosseinnarimanirad/Maptor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hosseinnarimanirad%2FMaptor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31980783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T17:30:12.329Z","status":"ssl_error","status_checked_at":"2026-04-18T17:29:59.069Z","response_time":103,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cartography","geodesy","geographic-information-systems","geography","geomatics","geometry","geospatial","gis","map","spatial","spatial-analysis","spatial-data","surveying"],"created_at":"2026-03-08T09:35:53.441Z","updated_at":"2026-04-18T19:02:06.574Z","avatar_url":"https://github.com/hosseinnarimanirad.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌍 Maptor Spatial Library\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/hosseinnarimanirad/Maptor/blob/master/LICENSE)\n[![Build](https://img.shields.io/github/actions/workflow/status/hosseinnarimanirad/Maptor/master-release.yml)](https://github.com/hosseinnarimanirad/Maptor/actions)\n[![Contributions Welcome](https://img.shields.io/badge/contributions-welcome-brightgreen.svg)](CONTRIBUTING.md)\n[![.NET](https://img.shields.io/badge/.NET-8.0-blue.svg)](https://dotnet.microsoft.com/download/dotnet/8.0)\n[![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Sta.Spatial.svg?style=flat-square)](https://www.nuget.org/packages/IRI.Maptor.Sta.Spatial)\n![GitHub last commit](https://img.shields.io/github/last-commit/hosseinnarimanirad/Maptor)\n\n**A comprehensive .NET GIS library for spatial data modeling, processing, and visualization**\n\nMaptor is a powerful, open-source .NET library designed to make spatial operations, geospatial data processing, and map visualization accessible and efficient. Built for **.NET 8+**, it provides a complete toolkit for geometry operations, coordinate transformations, data I/O, and advanced spatial algorithms.\n\n---\n\n## 🚀 Quick Start\n\n### Add a Console Project\nAdd a new C# console project\n\n### Installation\n```bash\n# Core spatial functionality\ndotnet add package IRI.Maptor.Sta.Spatial\n```\n\n### Basic Usage\n```csharp\nusing IRI.Maptor.Extensions;\nusing IRI.Maptor.Sta.Common.Primitives;\nusing IRI.Maptor.Sta.Spatial.Primitives;\nusing IRI.Maptor.Sta.SpatialReferenceSystem;\n\n// Create and work with points\nvar point1 = new Point(51.5074, -0.1278); // London\nvar point2 = new Point(40.7128, -74.0060); // New York\n\n\n// Create geometries\nvar line = Geometry\u003cPoint\u003e.CreatePointOrLineString(SridHelper.GeodeticWGS84, point1, point2);\n\n\nvar ellipsoidal_length = line.GetEllipsoidalLength();\nvar spherical_length = line.GetSphericalLength();\n\n// Calculate length\nConsole.WriteLine($\"ellipsoidal distance: {ellipsoidal_length:N1} km\");\nConsole.WriteLine($\"  spherical distance: {spherical_length:N1} km\");\n\n// Convert to GeoJSON\nvar geoJsonLine = line.AsGeoJson().Serialize(indented: true);\nConsole.WriteLine($\"line: {geoJsonLine}\");\n\nConsole.Read();\n```\n\n---\n\n## ✨ Key Features\n\n### 🗺️ **Spatial Reference Systems**\n- **15+ predefined ellipsoids** (WGS84, GRS80, Clarke 1866, etc.)\n- **Coordinate transformations** (UTM, Mercator, WebMercator, Lambert, etc.)\n- **Custom SRID support** for specialized projections\n- **Geodetic calculations** with high precision\n\n### 🔧 **Geometry Operations**\n- **Complete geometry types**: Points, Lines, Polygons, MultiPoints, MultiLines, MultiPolygons\n- **Advanced algorithms**: Delaunay triangulation, Voronoi diagrams, convex hulls\n- **Spatial indexing**: KdTree, RTree for efficient spatial queries\n\n### 📊 **Data I/O \u0026 Formats**\n- **Vector formats**: \n  - **Standard formats**: Shapefile, GeoJSON, KML, KMZ, GPX, WKB, WKT\n  - **Topology formats**: TopoJSON (with topology encoding and quantization support)\n  - **CAD/Graphics formats**: DXF, SVG, EPS (with styling support and round-trip coordinate preservation)\n  - **Document formats**: PDF (vector graphics export)\n  - **Columnar formats**: GeoParquet (efficient columnar geospatial data storage)\n  - **SQL Server Native Binary**: Native spatial data format\n- **Raster support**: GeoTIFF (Worldfile), GRD file, custom raster formats\n- **Terrain formats**: \n  - **Cesium Terrain**: quantized-mesh-1.0 (adaptive triangle meshes) and heightmap-1.0 (regular grids) for 3D terrain visualization\n- **Tile formats**: \n  - **PMTiles**: Serverless tile archive format (vector and raster tiles)\n  - **MBTiles**: SQLite-based tile storage for offline mapping\n  - **GeoPackage tiles**: OGC standard tile storage\n- **Database integration**: SQL Server Spatial, PostGIS, Personal GDB, SQLite/GeoPackage, MBTiles\n- **OGC standards**: WFS, WMS, GML 2/3, SFA, SLD styling\n- **Format features**: \n  - Round-trip conversion with exact coordinate preservation (SVG, EPS, DXF)\n  - Styling support (colors, stroke width, opacity) for CAD/graphics formats\n  - Topology preservation in TopoJSON\n  - Efficient compression and quantization options\n\n### 🧮 **Advanced Algorithms**\n- **Graph algorithms**: BFS, DFS, Dijkstra, Minimum Spanning Tree, MinCut\n- **Machine learning**: Clustering, Apriori, Logistic Regression\n- **Computational geometry**: Triangulation, simplification, generalization\n- **Spatial analysis**: Interpolation, statistics, terrain modeling\n\n### 🖥️ **WPF Visualization**\n- **Interactive map viewer** with zoom, pan, and layer management\n- **Rich UI controls** for spatial data display\n- **Custom markers and annotations** \n\n---\n\n## 🏗️ Architecture\n\nMaptor follows a modular architecture with clear separation of concerns:\n\n```\nMaptor/\n├── 📦 IRI.Maptor.Sta/          # Core spatial operations \u0026 algorithms\n│   ├── Spatial                 # Geometry types, spatial algorithms\n│   │   ├── IO/                # Format I/O (DXF, SVG, EPS, TopoJSON, PMTiles, CesiumTerrain, etc.)\n│   │   └── Analysis/           # Spatial analysis algorithms\n│   ├── SpatialReferenceSystem  # Coordinate systems \u0026 transformations\n│   ├── ShapefileFormat         # ESRI Shapefile I/O\n│   ├── Ogc                     # OGC standards implementation\n│   ├── Graph                   # Graph algorithms\n│   ├── MachineLearning         # ML algorithms for spatial data\n│   ├── GeoParquet              # GeoParquet format support\n│   ├── Pdf                     # PDF vector format support\n│   ├── Security                # Security/cryptography primitives\n│   └── Persistence             # Persistence abstractions\n├── 🔧 IRI.Maptor.Ket/          # Infrastructure \u0026 persistence\n│   ├── SqlServerPersistence    # SQL Server integration\n│   ├── PostgreSqlPersistence   # PostGIS integration\n│   ├── SqlitePersistence       # SQLite/GeoPackage/MBTiles support\n│   ├── PersonalGdbPersistence # Personal Geodatabase support\n│   ├── GdiPlus                 # Raster data handling\n│   └── WebApiPersistence       # Web API data sources\n├── 🖥️ IRI.Maptor.Jab/          # WPF UI components\n│   ├── Controls                # Map viewer, dialogs\n│   ├── Common                  # MVVM infrastructure \n└── 🧪 Tests \u0026 Samples/         # Comprehensive test suite \u0026 examples\n```\n\n---\n\n## 📦 NuGet Packages\n\n| Package | Description | Version |\n|---------|-------------|---------|\n| [IRI.Maptor.Sta.Spatial](https://www.nuget.org/packages/IRI.Maptor.Sta.Spatial) | Core spatial functionalities (GeoJSON, analysis, etc.) | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Sta.Spatial.svg?style=flat-square) |\n| [IRI.Maptor.Sta.ShapefileFormat](https://www.nuget.org/packages/IRI.Maptor.Sta.ShapefileFormat) | Read/Write shapefile (shp, shx, dbf, prj, etc.) | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Sta.ShapefileFormat.svg?style=flat-square) |\n| [IRI.Maptor.Sta.SpatialReferenceSystem](https://www.nuget.org/packages/IRI.Maptor.Sta.SpatialReferenceSystem) | Coordinate system transformations | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Sta.SpatialReferenceSystem.svg?style=flat-square) |\n| [IRI.Maptor.Sta.Ogc](https://www.nuget.org/packages/IRI.Maptor.Sta.Ogc) | OGC standard implementations | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Sta.Ogc.svg?style=flat-square) |\n| [IRI.Maptor.Sta.Graph](https://www.nuget.org/packages/IRI.Maptor.Sta.Graph) | Graph Algorithms (BFS, DFS, Dijkstra, etc.) | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Sta.Graph.svg?style=flat-square) |\n| [IRI.Maptor.Jab.Controls](https://www.nuget.org/packages/IRI.Maptor.Jab.Controls) | WPF Map user controls | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Jab.Controls.svg?style=flat-square) |\n\n\u003cdetails\u003e\n\u003csummary\u003e▶ Show more packages\u003c/summary\u003e\n\n| Package | Description | Version |\n|---------|-------------|---------|\n| [IRI.Maptor.Jab.Common](https://www.nuget.org/packages/IRI.Maptor.Jab.Common) | Basic UI models, rendering methods | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Jab.Common.svg?style=flat-square) |\n| [IRI.Maptor.Ket.SqlServerPersistence](https://www.nuget.org/packages/IRI.Maptor.Ket.SqlServerPersistence) | SQL Server spatial integration | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Ket.SqlServerPersistence.svg?style=flat-square) |\n| [IRI.Maptor.Ket.PostgreSqlPersistence](https://www.nuget.org/packages/IRI.Maptor.Ket.PostgreSqlPersistence) | PostGIS integration | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Ket.PostgreSqlPersistence.svg?style=flat-square) |\n| [IRI.Maptor.Ket.SqlitePersistence](https://www.nuget.org/packages/IRI.Maptor.Ket.SqlitePersistence) | SQLite/GeoPackage/MBTiles support | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Ket.SqlitePersistence.svg?style=flat-square) |\n| [IRI.Maptor.Sta.MachineLearning](https://www.nuget.org/packages/IRI.Maptor.Sta.MachineLearning) | Clustering, Apriori, Logistic Regression | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Sta.MachineLearning.svg?style=flat-square) |\n| [IRI.Maptor.Sta.Pdf](https://www.nuget.org/packages/IRI.Maptor.Sta.Pdf) | PDF vector format support | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Sta.Pdf.svg?style=flat-square) |\n| [IRI.Maptor.Sta.Common](https://www.nuget.org/packages/IRI.Maptor.Sta.Common) | Foundational utilities and abstractions | ![NuGet](https://img.shields.io/nuget/v/IRI.Maptor.Sta.Common.svg?style=flat-square) |\n\n\u003c/details\u003e\n\n👉 [Browse all packages on NuGet.org](https://www.nuget.org/packages?q=IRI.Maptor)\n\n---\n\n## 💻 Code Examples\n\n### Working with Shapefiles\n```csharp\nusing IRI.Maptor.Extensions;\nusing IRI.Maptor.Sta.ShapefileFormat;\n\n// Read shapefile\nvar shapes = await Shapefile.ReadShapesAsync(\"countries.shp\");\nforeach (var shape in shapes)\n{\n    Console.WriteLine($\"Country: {shape.AsSqlServerWkt()}\");\n}\n\n// Convert to GeoJSON\nvar geoJson = shapes.Select(s =\u003e s.AsGeometry().AsGeoJson()).ToList();\n```\n\n### Coordinate Transformations\n```csharp\nusing IRI.Maptor.Sta.Common.Primitives;\nusing IRI.Maptor.Sta.SpatialReferenceSystem;\n\n// Transform WGS84 to UTM\nvar wgs84Point = new Point(51.5074, -0.1278); // London\nvar utmPoint = MapProjects.GeodeticToUTM(wgs84Point);\n\nConsole.WriteLine($\"London (UTM): {utmPoint}\");\n```\n \n\n---\n\n## 🎯 Use Cases\n\n- **🗺️ GIS Applications**: Desktop and web mapping applications\n- **📊 Data Analysis**: Spatial data processing and analysis\n- **🏗️ Engineering**: Surveying, and infrastructure projects\n- **🚗 Transportation**: Route optimization, logistics \n- **🔬 Research**: Academic and scientific spatial research\n\n---\n\n## 🚀 Getting Started\n\n### 1. Clone \u0026 Build\n```bash\ngit clone https://github.com/hosseinnarimanirad/Maptor.git\ncd Maptor\ndotnet build\n```\n\n### 2. Run Samples\n```bash\n# WPF Sample Application\ncd samples/IRI.Maptor.Tag.SampleWpfApp\ndotnet run\n\n# Console Samples\ncd samples/IRI.Maptor.Tag.SampleCodes\ndotnet run\n```\n\n### 3. Explore Documentation\n- 📚 [Full documentation and guides](https://github.com/hosseinnarimanirad/Maptor/wiki)\n- 🎓 [Tutorial PDFs](docs/) - Step-by-step guides\n- 💡 [Sample applications](samples/) - Real-world examples\n\n---\n\n## 🧪 Testing \u0026 Quality\n\n- **1,300+ C# files** with comprehensive test coverage\n- **Unit tests** for core functionality \n- **Performance benchmarks** for some algorithms\n- **Continuous integration** with GitHub Actions\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md).\n\n### Ways to Contribute\n- 🐛 **Bug Reports** – Found an issue? Report it with steps to reproduce\n- 💡 **Feature Requests** – Got an idea? Open a discussion or issue\n- 🔧 **Code Contributions** – Implement fixes, new features, or refactor for better performance\n- 📚 **Documentation** – Improve README, tutorials, XML docs, or add usage examples\n- 🧪 **Testing** – Write unit/integration tests to ensure quality\n\n---\n\n## 📈 Performance\n\nMaptor is designed for performance with:\n- **Optimized algorithms** for large datasets\n- **Spatial indexing** (KdTree, RTree) for fast queries\n- **Memory-efficient** streaming APIs\n- **Async/await** support for I/O operations\n- **Parallel processing** where applicable\n\n---\n\n## 🌍 Internationalization\n\n- **Multi-language support** with localization framework\n- **RTL language support** (Arabic, Persian, Hebrew)\n- **Regional data providers** (Iran-specific datasets)\n- **Cultural formatting** for numbers, dates, and coordinates\n\n---\n\n## 📜 License\n\nMaptor is released under the [MIT License](LICENSE.txt) - see the LICENSE file for details.\n\n---\n\n## 🙏 Acknowledgments\n\n- Built with modern .NET technologies\n- Inspired by OGC standards and best practices\n- Community-driven development\n- Academic research integration\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**⭐ Star this repository if you find it useful!**\n\n[Report Bug](https://github.com/hosseinnarimanirad/Maptor/issues) · [Request Feature](https://github.com/hosseinnarimanirad/Maptor/issues) · [Join Discussion](https://github.com/hosseinnarimanirad/Maptor/discussions)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhosseinnarimanirad%2Fmaptor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhosseinnarimanirad%2Fmaptor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhosseinnarimanirad%2Fmaptor/lists"}