Know of any C# spatial data libraries? [closed] - c#

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this question
I'm looking at implementing spatial queries in .NET without using SQL2008. The first requirement is to be able to create a (BTree styled) spatial index and be able to query it.
Although SQL 2008 ships with .NET libraries for the types, you need to use SQL for the spatial indexes.
Has anybody used any .NET libraries for spatial data (OS or commercial)? I am looking at NetTopologySuite but it looks quiet and I don't want a dead library.

SharpMap is a (well known and used) OpenSource collection of spatial libraries for .NET
http://www.codeplex.com/SharpMap
Commercial libraries from ESRI would be the most widely used.
Can I ask why you don't want to use SQL for creating spatial indexes?
http://msdn.microsoft.com/en-us/library/bb964712.aspx
If you don't want to create indexes in the database then you will be stuck using shapefiles:
http://mapserver.org/utilities/shptree.html
Update
I've not used NTS or JTS, but there is also a C++ implementation of JTS at http://trac.osgeo.org/geos/ which has an active user community, and I've used on a couple of projects.
Shapely http://gispython.org/shapely/manual.html builds on GEOS in Python. If you are doing everything in "the cloud" then it may be worth reading this article - http://sgillies.net/blog/986/manipulimization-of-whatchamacallems/
Re indexes - I found SQL Server + spatial indexes to outperform shapefile + indexes with the same data. If you require the indexes for displaying data then tile caches would perform far better than any indexing.
Python seems to have become one of the key languages in GIS. There is also an R-type index library - http://pypi.python.org/pypi/Rtree/

NTS is good...
Other stuff which may be useful now or later:-
GDAL/OGR for accessing different raster/vector formats
PROJ4 for handling projections and transformations
(Check out FWTOOLS download for the above in 1 install)
You should check out Mapwindow too... ver 6 is all re-written in .NET should be out soon if not out yet.. saw it at FOSS4G in Sydney.
http://www.mapwindow.org/
Of course PostGRES with PostGIS is a very powerful spatial database you can access from .NET
Also check out SQLLite which has spatial extensions for vector dat, and now RasterLite!!
Geoserver or Mapserver if you want to web enable anything.
Other general GIS apps to checkout:
GRASS and SAGA

A Simple for QuadTree
http://www.codeproject.com/KB/recipes/QuadTree.aspx

I would suggest DotSpatial
its MIT licensed

Related

C# gremlin server implementation [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this question
We have an existing graph database written in C# that we are trying to add support for gremlin queries on top of. I was looking the documentation for becoming a gremlin graph system provider here but it seems to only mention high level classes to implement, with no documentation examples. Is there any open source projects or documentation for setting up a c# gremlin server to parse even basic requests to a graph database? All examples I've found online only pertain to Gremlin.NET which seems to be just for making requests to a gremlin server, but not any for the actual implementation of it.
I'm not exactly clear on what you're goal is, so I will try to offer some context that will hopefully clarify your situation. The first thing I note is that your graph database is written in C# and that you hope to add Gremlin support to it. Your interest in Gremlin Server tells me that you would like to leverage all the support TinkerPop has for other query languages so that your graph is available to other programming language ecosystems outside of the .NET domain (like, Python, Go, Clojure, etc).
If all that is correct then you have an important question to answer - where is the Gremlin traversal machine for your implementation? In other words, how will your graph written in C# process Gremlin queries? The issue of course is that the only publicly available Gremlin traversal machine that I'm aware of is the one written for TinkerPop for the JVM (which is probably one of the reasons that so many graphs are written with Java). You would need something similar to C#. Ultimately, you would need to develop some component in C# to natively process all of the Gremlin steps and there is no documentation that explains how to do that (mostly because the undertaking of such a project is rare and the effort itself would be time consuming compared to other user documentation tasks that are outstanding - though I think I'd admit that better design specification of "all the steps" might be a worthy effort rather than "how to process them".)
I think that from the way you've written your question you largely understand that much and that you expect to be implementing Gremlin steps in C# for your graph. In that case, this question is more about how to leverage the various programming language drivers by implementing Gremlin Server protocols to query your graph. If that is the case, then the best we have for that is described in the Provider Documentation. If you implement that websocket protocol on your server you will be able to allow all the different Gremlin Language Variant implementations to connect to your graph. I suppose that you will need to reverse your thinking a little bit when reading that section as it is largely written from the perspective of a driver developer but it does explain what drivers should expect in the way of communication with the server.
I'd recommend that you subscribe to the TinkerPop dev list and perhaps announce your work on this project (I think subscribers would be interested to know) and ask follow-up questions as needed in that forum.

Simple file version control module for .NET Web apps [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm writing a Web app that allows a user to upload and store files; however I'd like to add a simple version history feature to the files they upload based on the file name.
Is there an existing framework/module I can integrate for the version history part or is it better for me to write it up myself? I feel like there could be a lot of plumbing that's already been done in a framework. I couldn't find any and most of my Google searches turned up actual project version control software.
I'm looking at using .NET and C# to make this Web app.
I don't know of any libraries off the top of my head, but this is something I would probably roll myself anyway. The solution is simple. Take a SHA-1 (or other appropriate) hash of the file bytes, and use that as the filename/primary key in your backing store for that version of the file. This is called 'content-addressable', and is a simplified version of what git does.
One possible benefit of this is that if 2 users upload identical versions of a file, you only have to store it once.
Then you just need an list somewhere that tracks which hashes go in which order for a given user filename.
EDIT:
Its also worth noting that if you were not dealing with blobs, but structured data or your app objects, you might get much of this functionality from your data store via SQL triggers, or the RavenDB versioning bundle, for example.
I would use a version control system, like Subversion. This will be really reliable, easily integrable, it will offer history (with great details) and capability to download any of the past versions. Bonus: you can even diff two versions (obviously this make sense only for text based file types).

EXIF library for .NET 4.0 framework [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I've searched on this topic but the only suitable threads I can find are dated 2008 hence my new question.
I'm looking at developing a program using C# .Net 4.0 language. The aim of my program will be to extract EXIF information from jpegs (Manufacturer, Model, Geolocation info etc...) and then populate this into a MySql / Sql server DB.
Can anybody recommend any good libraries that may be suitable for this project? I would be looking for camera serial numbers too (I know this varies from manufacturer to manufacturer) but if anybody knows of any existing libraries that address this, it'd be most helpful.
Thanks and enjoy the weekend
The metadata-extractor project has been alive and well since 2002 for Java, and is now available for .NET 3.5 and above. There is also a PCL version.
Open source (Apache 2.0)
Heavily tested and widely used
Supports many image types (JPEG, TIFF, PNG, WebP, GIF, BMP, ICO, PCX...)
Supports many metadata types (Exif, IPTC, XMP, JFIF, ...)
Supports many manufacturer-specific fields (Canon, Nikon, ...)
Very fast (fully processes ~400 images totalling 1.33GB in ~3 seconds) with low memory consumption
It's available via NuGet or GitHub.
Sample usage:
IEnumerable<Directory> directories = ImageMetadataReader.ReadMetadata(path);
foreach (var directory in directories)
foreach (var tag in directory.Tags)
Console.WriteLine($"{directory.Name} - {tag.TagName} = {tag.Description}");
(Disclosure: I maintain this library)
This CodeProject article was written just last month, and its API is a big improvement over some of the other .NET EXIF readers:
http://www.codeproject.com/Articles/36342/ExifLib-A-Fast-Exif-Data-Extractor-for-NET-2-0
It's also available over Nuget, and is licensed under the CPOL.
For basic EXIF information(manufacturer, camera model, time, aperture, etc.), I would look at the System.Drawing.Image class - in particular the PropertiesItems collection.
There are disadvantages to this class. It requires loading the entire image into memory before retrieving the EXIF info (i.e. it is somewhat slow). It also does not handle all of the vendor specific fields that aren't uniform from camera to camera.
Image.PropertyItems
MSDN: Reading Image Metadata
PropertyItem.Id
I have used it with great success to collect information about my photo collection (tens of thousands of photos taken with a dozen different digital cameras of various makes and models).

Looking for Recommendations on Version Control System with Intuitive (.NET) API? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I'm working on a project which generates (composite) Microsoft Word documents which are comprised of one or more child documents. There are tens of thousands of permutations of the composite documents. Far too many for users to easily manage. Users will need to view/edit the child documents through the app which hides all of the nasty implementation details. A requirement of the system is that the child documents must be version controlled. That is what has been tripping me up.
I've been torn between using an off-the-shelf solution or rolling my own. At a minimum, the system needs to support get latest, get specific version, add new, rename and possibly delete. I’ve whiteboarded it enough to realize it won’t be a trivial task to create my own. As far as commercial systems I have VSS and TFS at my disposal. I've played with the TFS API some, but it isn’t as intuitive or well documented as I had hoped. I'm not averse to an open source solution (e.g. SVN), but I have less familiarity with them.
Which approach or tool would you recommend? Why? Do you have any links to API documentation you would recommend?
Environment: C#, VS2008, SQL Server 2005/2008, low volume (a few hundred operations per day)
SharePoint does a pretty good job of document management, with versioning, etc. It also has plenty of APIs and is a much more modern approach than using the COM layer for VSS. SP would be a good solution if you are writing this as an enterprise solution (dedicated server, etc), but not so good for a desktop or small-business/SOHO app.
Its actually pretty easy to get rolling with document versioning in Sharepoint. If you setup a new list you will be able to define version options for attachments and list items right in the SP list settings.
You can also get a much more detailed control over versioning by using the SP webservices. If your planning on doing all of your document access from within your application, and don't want to have to push users into the Sharepoint site I would use this approach. Here is a good tutorial to get started with SP versioning
Give a try to Plastic SCM. It's distributed, has a great GUI, it can work as centralized too and you'll find tons of .NET assemblies to hook your code.
alt text http://www.codicesoftware.com/images3mk/screenshots/visualize_4.JPG

Good GIS Software or Components for Windows PC in .NET? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
Last week i searched for good free or opensource solutions and component for GIS (Geographical Information Systems) I founded some system but no one fill my requirements
SharpMap is very buggy software
Gmap.net is very slow
MapWindow have a very complex structure and is very buggy.
I founded uDIG but is in java, i need a solution in vb.net or c#.
Anyone know a good solution that fill my requirements or have alternatives, i accept solutions?
You are limiting yourself a lot by insisting on .NET. I don't know of anything other than SharpMap or MapWinGIS ActiveX (MapWindow). Here are some free, but not .NET, options for Windows desktop applications.
If you'd consider writing your standalone application in Python or C++:
Mapnik
QGIS
Or if you'd consider writing a plug-in or a customisation for an existing GIS:
GRASS can be customised in Python, Perl, Ruby...
QGIS can be customised in Python
I think that you've covered it already. There really aren't any production quality open source GIS project out there using C#. Most of the good work is being done in Java, C/C++ or Python these days. If you must use the .NET Framework then I think the best of the bunch is indeed SharpMap.
Failing that you need to look at commercial products from companies like http://www.esri.com. Of course, it also depends on what you need: web services, Windows Forms control, WPF, etc. In the past I've managed to whip up some C# that constructed the right XML to send to a Java server-based mapping engine, so you could look at something like GeoServer and build your own client. Obviously not what you want to get in to but I don't see that you have many options beyond the ones you've listed.
I would recommend to look in to MapAround
Have you checked out SharpMap? It's available on codeplex.
MapSurfer.NET framework might be a good option.
MapSurfer.NET is free, modern cartographic framework which is able to provide maps of superior cartographic quality. This framework supports a bunch spatial data formats (e.g., Shape files, PostgreSQL, OSM, etc.) and web services (e.g., CartoDB, Mapzen, etc.). Furthermore, its setup includes MapSurfer.NET Studio application which allows creating and editing map styles (analogue of TileMill). Its symbology is inspired by both OGC specifications and other similar toolkits such as MapServer, GeoServer or Mapnik.
We use Mapzania (http://www.mapzania.com).
The best thing about it is that you load it into existing web-applications via a NuGet package and then you get a bunch of GIS functionality.
It uses Leaflet as its front-end and it has JS library that makes it easy to do stuff to Leaflet.
It also has a nice MapStyler for creating and editing maps.

Categories