Powerful .NET Map APIs? - c#

A coworker of mine thought of a great way to visualize a lot of the data we work with in our user-end applications, but we're not aware of many available sdk's or apis that hook in.
We're trying to recreate in essence, the "Magic-Wall" of CNN. We would like to be able to show trends across the country in a 'heat-map' kind of way, and be able to drill down into a state to show those same trends across counties. We don't need the move-states-all-over-the-place functionality that the commentators loved to use.
We're aware of Mappoint, but more research needs to be done if its capable of what we require.
Would it make more sense to just try and roll our own? Has anyone else tried something along these lines? The only problem I can see is defining the boundaries for each state, or by county on the state-level.
Thoughts? Ideas?

We ended up going with SharpMap.

Hi you can take a look at Telogis GeoBase C# SDK, support WPF, WinForms and there is an XML/SOAP server for webservice implementations.
http://dev.telogis.com/
(I work for Telogis)

I have used Manifold GIS. It is cheap and has a great SDK.

check out ESRI's product offering... ArcGIS Server and stuff like that

http://en.googlemaps.subgurim.net/
It's an asp.net user control

I have worked with MapPoint and found it very robust - and there is a book on Amazon. (Although it is a little dated, but still mostly works.)
I have also used GoogleMaps for web development. If I'm not mistaken, I think that Google has released an API to allow GoogleEarth on web sites as well.

You could try CartoType, our portable mapping library. There are CartoType SDKs for .NET, plain Windows, Android, iOS, Linux, and Mac OS.

Related

How to render a 3D model/graphic of a building in a ASP.Net MVC webapplication

I am researching the possibility to render a 3D model or graphic from a building described by data in a ASP.Net MVC webapplication (C#).
Most posts on forums and on stackoverflow and articles on blogs and websites I find about things related are old (2006 and before).
As far as I can tell there are three choices: Direct3D, OpenGL and Unity 3D.
Direct3D is from MS but I can't figure out whether this is suitable for a webapplication or not. Any experience anyone? But as stated before, the highest ranked articles in google are from 2006 or earlier (is it still being developed/maintained/used?).
OpenTK (www.opentk.com) looks the likely candidate for use of OpenGL but the latest release is from October 2006 (although there are recent blog posts on their website).
Unity 3D seems very advanced, modern and recently maintained, however I am uncertain whether it is not to bulky to render a simple 3D model of a building.
I would welcome any suggestions whether one or the other is better suited for the task and preferably examples of implementation.
Cheers,
Daniƫl
I think you might be misunderstanding how this process works.
I assume that you want to render the object on the client?
In that case you need to look at a client-side technology. ASP.Net or any other server-side platform can pass the data to the client but you need to use a client-side technology to do that.
I don't know exactly where this stands right now but I would expect you to need to use Silverlight, Flash or possibly HTML5 for the display.
HTML5 is standards compliant but it is less mature and as far as I know you will need a fairly new browser to access it: http://msdn.microsoft.com/en-us/library/hh535759(v=vs.85).aspx
Silverlight is more mature, should integrate naturally with your Microsoft toolset but will require users to install the plug-in before they can use your tool. I don't know how ubiquitous it is, but that may be an issue for you. I would still probably favour this if you want quicker/more achievable development time: http://forums.silverlight.net/t/225673.aspx/1
Flash is very ubiquitious but you will need proprietary tools to develop it and I don't know how/whether it would integrate with the Microsoft stack. I think they would prefer you to use their own stuff. It's good if you want something available on most current browsers but my feeling ( and if I'm honest my hope ) is that it will lose currency as HTML5 takes over.
Of course, if you're properly old school like it's 1998 you should totally go for VRML.
As regards the server platform you use, that's basically irrelevant to rendering and display. It's role will be to pass out data. If you are using a Windows server then you probably want to look at something WCF to pass the data out to your client.
If, you want to render your objects on the server and then use those renderings to create images or video on the client that is a slightly different matter again.

Is Silverlight .Net? (read before deleting)

I know this sounds like a dumb question, but it's to settle an argument a co-worker and I had about Silverlight.
To quote my co-worker "we'll be developing in Silverlight...we won't be doing much .Net development".
My reaction was to state that Silverlight is .net. Sure the packaging of the assemblies are different, but at the core both VMs/GCs are running the same code. Silverlight is just missing a large section of routines provided by the full .Net 4 profile.
My co-worker's argument is that Silverlight has its own set of VM/GC bugs and that over all the Silverlight VM is way less mature than the more robust full .Net VM.
Does anyone have some answers to this? Perhaps there's some documentation on this somewhere? If I'm wrong, I'll admit it. But I can't find anything that says I am wrong.
Straight from the horse's mouth:
Silverlight is a free plug-in, powered by the .NET framework
Silverlight.net/GetStarted
I don't think you can get any more definitive than that.
Yes, Silverlight is .NET.
This issued is discussed in a different forum here.
This link, coupled with the MSDN link mentioned earlier should provide you with plenty of support for your argument.
Hope this helps!
I think your coworker is trying to sound smart without being very smart...
Silverlight has access to ALL of the .NET framework shared components. He's splitting hairs about the graphical components that vary from the Winforms(WPF) platform. With his rationale you can argue that ASP.NET isn't .NET because there is a different construct used for UI implementations. I say just ignore him and if he's your boss check out http://careers.stackoverflow.com

Programming with .net

I've just recently learned C# and am interested in .net but I don't know where to begin.
I know .net is just a bunch of libraries and can be used for web programming?
I'm not quite sure what areas in .net that I need to learn?
I don't know what I am trying to accomplish with .net? But I want to learn .net.
What other things can be achieved with .net?
Thanks.
Added -
The 2D class that I finished was a C#/Winform/XNA class working with 2d objects. Though there was never once a reference about .net in class. I just learned C# which is comparable to C++ and Java and Winform = just using the tool box and hooking up controls to back end code. XNA portion was being able to use the hardware to draw primitives and manipulate data going through the model->view->project pipeline.
What part of this class was .net? None right?
You can do nearly anything with .net (the same is true for most other platforms).
You can use ASP.NET for web programming, Windows Forms or Windows Presentation Foundation for GUI development.
There are also lots of functionality for networking, database development and XML or Image processing.
But the question is, what do you want to achieve?
I know .net is just a bunch of libraries and can be used for web programming?
.NET is much more than this. It is not restricted to web programming. There are possibilities for doing Windows Applications (WPF), Web Applications (ASP.NET), Network Communication (WCF), Database Access (ADO.NET), ..., you name it. So just pick a language you would like to learn like C# and go ahead and visit MSDN.
.Net is a managed runtime with libraries. It is not exclusive to building "web" applciation or pages.
The .Net Framework is 'the libraries'.
The CLR is the runtime (where the specification thereof, is deposited into a standarization organization)
C#/VB.Net/F# are flavors of different syntaxus (how do you spell this in plural?) used to instruct the runtime, using the libraries, to perform actions in an order you define (AKA programming)
Wanting to learn .Net is akin to learning another language/gammar. If you have no previous knowledge of "language/gammar" itself, you are using this specific language/runtime to learn 'language' in general.
Hope this helps,
Sorry, but if you've just used the toolbox to hook some stuff together you haven't learned C# or programming. You've learned how to hook some stuff together, but you're obviously interested in learning how it works. Seems like you're going to have to learn a lot of stuff from scratch. There's a lot to learn...
I think your best bet to learn .Net and C# (you can't really learn one without the other) apart from following a course specific for that goal is to find yourself a good book that explains the whole picture and run through the examples in the book.
Looking on internet, asking questions, and collecting bits of examples, etc. will give you little pieces of understanding, but I doubt you'll be able to get a comprehensive understanding of programming, .Net and C# that way, simply because you won't find a big picture explanation. I find a good book gives me a deeper understanding even though I've already worked with .Net/C# since it first came out, simply because there is much more explanation of how things work and why.
Personally I really like the Pro series from Apress: have a look at Pro C# 2010 and the .Net 4 Platform
It might be perfect or not depending on your understanding of software development. Otherwise just search for C# and see if other interesting books pop up.

On what factors should we opt Java or .Net technology for a windows application?

I am quite aware of both java and C# .Net .when i try to create a new windows application which are the factors that decide which technology should be opted?
I know of one thing ,for great and faster UI development Visual studio helps a lot.
There are several factors I would consider...
What are your programmers used to working with already? What third party libraries are you likely to need, what's available on both platforms?
Does platform independence matter to you?
Would LinQ be advantageous?
If you're starting from scratch, costs for the platforms?
Both platforms have strong communities around them...
Hope this helps...
Dotnet is pretty much native in Windows which obviously makes it more suited to writing Windows programs. Using Java in a Windows-only environment makes it much harder for you since it effectively just adds another unnecessary API layer.
You will soon realise that all integration points between your Java code and Windows are a bit problematic. For instance, creating installation programs, access file system, reading/writing the registry, starting/stopping services, task bar icons, using Windows GUI components (media player, IE...), help file system...
It all boils down to this imo: The Dotnet framework is much richer in terms of functionality than the Java dito, mainly becuase Java is cross-platform and thus needs a "one-size-fit-all" approach to its API. My experience is that you will only get frustrated trying to "emulate" a Windows native program in Java.
Choose the one with which you are most familiar. The two platforms are different enough that skills from one does not transfer easily to the other.
In any case, try making a trivial application in both your scenarios and see how it works for you. The initial impression is important as it is probably indicative of how well the rest of the work will be.
It also depends on what kind of windows application you want to build. If it's just a question of building a simple standalone application then, considering you know both languages equally well, I wouldn't hesitate and would go for a 100% microsoft solution, especially if you have to do specific things like accessing ActiveDirectory, the windows registry, etc.
Not that you can't do it in Java : you can always use AD through LDAP in Java for example, but the APIs are just "a bit" more complicated than the .Net ones (try to decode objectSIDs in Java without a few tricks).
Now if you have to build an enterprise app. I just feel that popular frameworks like Spring and Hibernate are always coming out after their Java counterparts (disclaimer : this is a personal opinion; I didn't do any research on this, thoroughly comparing frameworks in both languages, but that's just the feeling I have). I don't know how good the .Net implementations are though, so I don't have a point of view on that. I just remember writing .Net 2.0 apps and not liking ADO.Net at all.
My view is that the frameworks I like do exist in both languages, but they are first developed for Java, then ported to .Net.
Now I'm not the kind of developer trying to defend his favourite language over the others. If I don't have external constraints to develop, then I choose whatever language gets my app up and running faster and in the most efficient way.
...But with java you will have crossplatform application on scratch.
Also coding UI in java is not difficult - if you read some guides before and use some frameworks as swing application framework or SWT framework.
If its Exclusively for Windows then .Net is best bet.
Yeah for a pure cross platform application Java can't be beat, but if you can manage it Silverlight is a subset of WPF and a pretty compelling cross-platform proposition on its own.
Productivity-wise I think WPF has an edge as it has a nice XAML markup language that can be easily created with the built-in designer in VS.NET or integrates nicely with MS' suite of expression products.

RoR on GAE?

Since Google App Engine will soon full support Java:
Would it be possible to run Ruby on Rails on Google App Engine? Or the limitations imposed by the AppEngine runtime will affect the JRuby implementation?
What about other languages such as Groovy, Clojure, Scheme?
Are there any effort to support .net and C# in JVM?? I think this would create a NEXT level on webdevelopment.
This is already possible. Its not perfect, but I would expect rapid improvement.
More information:
Official Working Library List
Unofficial Working Library List
It looks like the plan is to support those technologies eventually.
http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html
If you can use the new technologies with GAE to accomplish what you want to, I think it would be in your favor to do that.
GAE has plans to support JRuby on Rails, AFAIK.
.NET and C# already have their own VM, and can run under Linux via Mono... if you're reaching the point where you want a low-level language on the JVM (C#), just use Java, and if you want to use .NET, you're better off staying in the Microsoft world.
JRuby is already supported, insofar as GAE/Java supports any JRE language. The main difficulty - something that can be overcome by users, rather than requiring Google support - is making ActiveRecord work with the Google datastore APIs.
Unfortunately, I'm not familiar with Ruby, so I can't speak as to how difficult this is. I'm sure there are people already working on it.

Categories