When you ask this question, I assume that you already have the experience to build map apps on browser with
Google Map or
Leaflet etc. This might satisfy your requirement already. But when you have a GIS data (e.g. SHP file, Postgre or even CSV) that contains more precise vectors, or more properties on the records, or analyze on a region (e.g. find some records with some special condition in a random drawn area), it might be a headache to implement with the existing client based libraries. Because the 3rd party client libraries only provides restricted predefined query functions, styles etc. functions. In this case, setup a custom map server is a good choice and become a solution to extend your map application more. With your own server, you can also interact with the 3rd party client map libraries to provide better UX for applications.
In the GIS region, we know there are many famous client MAP libraries like
It is well-known that NodeJS runs in
single thread and
event-loop. I used to use many other GIS component with
JAVA, it has a bad experience to build high performance service. We need to consider the mutex lock on resource reading/appending in multi-thread.
With NodeJS’ single thread mode, you don’t need to consider the thread safe issue; instead, we can focus more on the concrete business of your application.
Technically, NodeJS runs with V8 engine with single thread and I/O non-blocking mode, it seems has worse performance than the other techs, such as JAVA. But in the real world with high CPU performance, the gap becomes less and less.
It really depends on the scenario of your application. For example:
C#will be a best choice.
I don’t think the application is a pure I/O or CPU intensive application, but for the balanced workload application, I would say the performance will be about the same.
One worst thing I can imagine for node is the memory restriction (e.g. 1G in 64-bit system). We need to either reduce the memory usage or manually expand the memory.
Ginkgoch will also provide those solutions on this cross-platform, various categories of GIS applications. (PS. it is now supported website, web service, desktop; and mobile is in my backlog).