Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I want to look into ArcGis, and I cant get my head around where it fits in.
I have used the Google Maps API to create some simple maps with makers, Overlays, Listeners etc.
I have recently started looking at PostGIS, and i fully understand that, it enhances Postgres with additional data types and functions for drawing polygons and mapping areas. Great!
What I dont understand is where ArcGIS fits in?
What does it do? why would you use it.
I have a large db of addresses.
Ultimately, it comes down to whether you are happier having a big software stack where everything is designed to work together or whether you are happier doing a bit of SQL, and/or Javascript and Python coding (these are the big players in open source GIS), and generally piecing bits together yourself. ESRI, the makers of the ArcGIS family (which includes desktop, server and web based technologies) is essentially the Microsoft of the GIS world -- the big player, whose products are designed to work very well with each other, but are sometimes a bit tardy when it comes to standards compliance or interaction with 3rd party software.
On the open source side, Postgis, which essentially provides a spatial type extension to Postgres plus many spatial functions, is really an amalgam of various packages: GEOS, which provides many of the spatial predicate functions, Proj4j which does coordinate system conversion and GDAL which provides a lot of glue functions. Recently Postgis has added native support for raster, 3d and topology functions, along with the long existing vector functions, which means that amazingly sophisticated GIS analysis can be performed directly at the database level by chaining together SQL functions.
As has been suggested above QuantumGIS (generally known as QGIS) provides most of the functionality of ArcGIS desktop, for those wanting to go that route. Javascript libraries, such as the OpenLayers or Leaflet (there are many others) can be used to visualize the results of Postgis queries. In addition, there are tools such as Geoserver (Java serlvet based) which allow you to serve up data held either in Postgres/Postgis tables or ESRI shp files in common formats such as WMS, WFS and WMTS, acting as a bridge between client and server.
The final decision is often as much political as technical. If you work for a large utility company or local government, for example, support contracts and industry norms are likely to outweight budgetary constraints. If you are working for a small startup and have people who are happy working at the command line, you will likely get much better value for money from the open source stack.
I assume you are asking about ArcMap which is ESRI's desktop GIS application. The application is an extremely powerful cartographic production and analytic tool that allows the user to perform complex spatial operations. ArcMap also provides a graphical user interface that allows users to edit geometry supporting complex typologies that model real world phenomenon. The application also supports a wide range of raster analysis that is commonly used for remote sensing.
Some examples of how you could use ArcGIS with your database of addresses:
You can use it to compare addresses to census data and better understand customers.
Generate heat maps of statistically significant clusters.
Use network analysis tools to identify closest facilities or route you to the addresses in the most efficient order.
Find what types of features your data falls within (ie City council districts, fire districts, states, etc) and update your data with that information.
These are just a few things you could do with ArcGIS. In short, this tool allows you to view and analyze your data in a spatial context versus the relational approach you seem to be taking now.
ESRI's ArcGIS is very powerful and has TONS of customization options through their ArcObjects API as well as a new way to add your own custom tools and button commands through a framework they call Add-ins. You can even use Python to create a very simple (code-wise) tool that lets a user click a button and, for example, return a selection on the map of all the telephone poles that are within 50 feet of a tree line. They could then just export this set of pole features as a tabular data report for a tree trimming crew to visit each pole to see if they need to trim back the vegetation. You can also use their ArcGIS Runtime to build a completely custom tool that runs from a USB thumb drive with zero install with only the parts and pieces you create like a Map, Table of contents, and a custom toolbar that has only the buttons and tools you need specific for that application. I've seen a gas utility inspection application written this way that only had the map and three buttons for them to use on an iPad or Android tablet. The options with ArcGIS are very near to endless and they keep updating it all constantly.
My day job is customizing ArcGIS to fit gas, water, and power utilities' needs to match their business workflow. I have been working with ArcGIS since 2004.
If you understand google maps API and postGIS then you really have no need for ArcGIS. Download QGIS and use it in conjunction with POSTGIS http://www.qgis.org/
ARCGIS is just unnecessary that's why it doesn't make sense to you (and rightfully so).
Simple Answer: It lets you use MAPS to analyze and store data in a database, where said data has some sort of 'location' attribute on a surface or in 3D space.
Here's a quick example: "Return all of the parcels in Smith County that are within 1000 feet of a school and display them in red on a map."
If I had to answer in one sentence it would be like: if you just want to show where is something on the map (and some basic data with it) use Google Maps API but if you want to analyze, query and understand your spatial data use ArcGIS.
ArcGIS is platform, containing Desktop, Server, Portal (spatial CMS) with various types of geodatabases supported. ArcGIS for Desktop is used for powerful spatial analysis, it includes more than 700 different tools that support strong spatial and alpha – numerical analysis. When we are talking about spatial analysis we can talk about different spatial overlays (simple example: where do wolves and foxes live), proximity analysis (factory to customer distances; protected area (buffer) around oil drill) and spatial statistics (finding patterns in space (and time), mapping clusters (hot/cold spots) and also, since database is in the background of every serious GIS you can use SQL to query your alpha-numerical (and spatial) data to make better decisions.
Mapping is also function of ArcGIS Desktop software – our brains can understand much better information when they are visualized, and also you can and should visualize results you obtained through analysis. Keep in mad that map is only visualization of the data in geodatabase (or shapefile).
ArcGIS Desktop is also used for data entry – with “heads up” editing, for example form orto-photo images for creating vectors with attributes.
Geodatabase management is also part of ArcGIS and geodatabases vary from file geodatabases to enterprise geodatabases which use SQL Server, Oracle, DB2 and other RDBMS systems. Single user file geodatabase supports one concurrent editor and has no storage limit, while enterprise databases provide multiuser editing, versioning, archiving and backup scenarios. Personal geodatabase is single user geodatabase using Microsoft Access for storing spatial data.
ArcGIS for Server provides different formats of spatial services containing spatial data (map) along with alpha-numerical information (if supported by format). Types of ArcGIS for Server services that can be published are: Mapping, WCS, WMS, Feature Access, Schematics, Mobile Data Access, Network Analysis, KML, WFS… ArcGIS for Server services are authored using ArcMap, served with Server (of course) and their URL links are used by developers who code from the scratch or used within Portal for ArcGIS web app templates which can be customized by developers if needed, or other, Silverlight of Flex Esri viewers.
I would say that if you are already comfortable with PostGIS, you should be fine for any work with vectors. If you are working with raster data then I think that would be where ArcGIS would fit in. In ArcGIS you can run different types of statistics and filters on rasters where I don't think you can with PostGIS but I'm sure that will eventually be added.
One more thing, if you ever need to automate your PostGIS work, I would recommend using Python with the psycopg2 library.
Related
I need some directions. My mobile app is heavily dependent on Google Maps for the the following components: maps, geocoding/geolocation, autocomplete, distanceMatrix and directionsMatrix. However, I am running into quota issues and they are getting worse and worse. I need an as reliable solution but without the quotas and am considering OSM. I have my own api unix server I can install OSM too but I am having a hard time finding a complete install package.
Everything I read is separate packages to install and configure for each of the components I need to migrate to. Is there not a comprehensive OSM package that has all of the components built into it? I keep thinking there should be a single package that is all integrated to work together but I can't find one.
If one exists please point me in the right direction. If one doesn't can you please recommend the best, and easiest to use, OSM packages that meet my listed of required components? Thanks in advance.
OSM consists of several components. First there is the map data which can be seen as raw data, no software involved. Depending on your goals you will likely need a database software, which is usually postgresql. For drawing a map you will need a renderer, for address searching a geocoder, for directions a routing software and so on.
Showing a map: Use one of the available tile providers or render your own tiles
Geocoding: Take a look at Nominatim or Photon. Photon is based on Nomatim and adds some features, most importantly autocompletion. There are other search engines available as well.
Routing: GraphHopper or OSRM. More alternatives available, check the list of OSM online routers.
Similarly to tile servers, most of these softwares can be either run by yourself or accessed via various online providers. Online providers usually have quotas whereas running your own software is solely limited by your own resources.
First, I'd like to let it be known that this is my first journey into developing mapping applications with such a large set of data. So, I am in way locked into the techniques or technologies listed below...
The Overview
What I am trying to accomplish is the ability to load my company's market information for the United States onto some form of web-based mapping software. Currently I am trying to accomplish this with Google Maps JS api and GeoJSON data, but am not against other alternatives. There are roughly 163 files (ranging from 6MB to 200KB) that I have exported from ArcGIS into GeoJSON files, and then loaded into a database (currently as GeoJSON strings). We have developed a UI that loads the data based on the current map bounds and Max/Min calculations in the corresponding records.
The problem I'm running into is the render time on the map itself, which is annoying when switching between different regions, states, or zoom levels. The API calls to load the data are acceptable in regards to the size of the data being retrieved. My boss said it is great for a proof of concept, but would like to see it much, much faster.
The Questions
What suggestions could you offer to increase the render time?
Are there better options (3rd party libs, techniques, etc) for what I'm trying to accomplish?
It was suggested by a co-worker to export the map shapes and just use the images for overlaying the information based on the coords. Any input on this?
One solution to your problem could be reducing number of vertices in polygon or polyline layers (files) while preserving feature's shape. In that way geoJSON file would be smaller and easier to render.
You can use tools available in ArcGIS for Desktop.
See
How to Simplify Line or Polygon
or
Simplify Polygon
I'm sure there are similar tools in QGIS or any other open source GIS software.
There are other solutions to your problem like prerendering data in map tiles that could be overlayed over Google Maps basemap(s). That is probably the fastest solution but more complicated.
Maybe this could be good starting point.
Just couple of random thoughts.
On one project I worked on I noticed terrible performance with geoJson I loaded via REST service.
I found out that browser's JavaScript engine had hard time parsing large geoJson responses. I finally decided to load data in batches (multiple requests). Performance increased enormously.
I noticed you use 163 files (layers?). Do you display them at the same time (no no no) or you have some control panel to switch layers on/off? If you display them at the same time then performance will suffer for sure and you should look into generating map tiles with thematically grouped layers. In that way you'd come up with couple of tile layers that you can switch on and off.
Also, if data used to generate tiles changes frequently than tiles aren't good idea. Then maybe you should look into Web Map Services. WMS generates maps on the fly from data stored in database. GeoServer supports WMS and it's easy to configure and use.
I'm working on a project where I need to display maps. These maps are going to have routes and points of interest, there will be many maps to display in the future. At this moment, the project operates with mysql. At first, I was thinking in keeping the points of interest and the points from the routes in a table in mysql server and display them with leaflet.js and OSM, but doing some research I found information about geoJson to store points and routes, and also i notice that leaflet can display information in geojson format.
I am a novice at Maps topic, so what do you recommended me?
To store points in mysql?
To have a database of geoJson files which store information about any map?
The project is about a Web application where the user will find detailed information about some routes, this information will be displayed in text format(html) and will be accompanied with a map (that will display the route and some points)
We (https://play.google.com/store/apps/details?id=org.aph.avigenie&hl=en) used a sqlite DB on the device to store favourites. We also store OSM (Open Street Maps) data in MySQL. Having the geospatial extensions is helpful; however, we don't use them, we have been able to find ways around having them.
A really useful answer would require some more insights about your application. For example, is your application somehow coupled with a webservice? Is your application itself a web service? In that case, should the various calculation be performed on client-side or server-side? Are you dealing with few POI and routes having not many waypoints? Or are you working on a planetary GIS?
Assuming you probably are somewhere between those last two extremes, you should definitively take a look at:
MySQL spatial extension
or preferably PostGIS
Those will allow you to store lots of data and to efficiently retrieve them.
BTW, remember the earth is not flat. So, storing point is one thing, but displaying them on a flat display will require to use some kind of projection. GeoJSON itself is only a file format. You will definitively require a tool than can handle that for you. That will be one key feature to check, I think.
I am trying to use a map provider. I wanted to know which of these is better.
Until now, all the reading I have done indicates OSM data is better. Mainly for, It's OPEN & off-line usability. But couldn't get a proper take on which Layer to use.
How are the API supports?
Which tiles to use? (mapnik used by openstreetmaps seems to be nice & free)
OpenStreetMaps Tile usage policy(http://wiki.openstreetmap.org/wiki/Tile_usage_policy) does say limited usage.
Which other slippy map layers are good/better with openstreetmaps (free/paid).
My requirements are:
To allow users to query for routes.
To allow users to look for a location based on GPS co-ordinates.
Add a layer to display a set of some of my data based on location.
OpenSteetMap data is better in the sense that:
It's free and open.
the data is being provided by thousands of users and it's more precise and covers much more information than Google maps data. (except for the satellite view which doesn't exist in OSM).
Tiles - depends on the application you would like to build. For a small (not a high number of http requests) web application you can use the web API which is highly documented and reliable.
The real advantage of OpeenStreetMap, is using OSM data and a number of tools to built you're own OSM server (a good article here), and to use Mapnik or Osmarender tiles render engines for generating you're own tiles that can be used on web applications.
This is why the Tile limitation usage exists, because they recommend hosting and using your own server tiles.
The main difference between Mapnik and Osmrender is that the second exports SVG tiles format.
Information regarding your requirements:
A. routing
It's possible to use OSM data to build a routing web application.
Here is a list of routing programs and web services on OpenStreetMap wiki
Here are two websites using routing with OpenStreetMap which can give you an idea of how it's used on web applications:
yournavigation.org
openrouteservice.org
B. search by gps coordinates
You can use reverse-geocoding and query the OSM database for GPS coordinates the Nominatim tool.
Here is a web application using this tool.
C. layers
Here is the list of webmaps libraries that you can use.
OpenLayers can work with Mapnik generated tiles and it's a commonly used library (with no server-side dependencies) with plenty of docs. It's a framework that can be used as well with Google maps, so it's worth giving it a try.
Polymaps integrates well with SVG tiles generated be Osmarender. It can generate display / diagrams / of specific areas based on marker - user location.
I am not familiar with the GIS (or map), but recently I have to do some work related to this field. I know some map providers: OpenStreetMap, CloudMadeMap, OpenCycleMap, OpenAerialMap ...
My questions is: Do those map providers have the same standards? I mean the tile size, zoom levels, scales for each zoom level and so on.
Is there any standard for open GIS? If yes, where can I find them or some one could give me some references or links?
Yes, all the services you mention, along with many others in the open-source GIS mapping world, share the same defacto "z/x/y.png tile standard". The tile numbering, zoom levels, scales and so on are all the same across the these providers.
The "standard" isn't official, but the OCG are formalizing the details under the acronym "TMS", unfortunately in an incompatible way with what is in practice (different origin for the tile numbering. Gah!)
The OpenStreetMap wiki has the best description of the numbering scheme. You can display such tiles in OpenLayers using the XYZ or OSM layers. Note that the projection for all these layers is "Spherical Mercator", aka EPSG:900913 or EPSG:3857.
I run the OpenCycleMap servers, and was the Technical Lead for CloudMade when we chose this scheme. Both were chosen to be identical to OpenStreetMap, which in turn was based on the scheme Google were using at the time.
I am also very new to GIS programming, but it seems GIS is heavily standardized. From the storage layer (WKT, WKB), to the server layer (WMS, WFS, SLD..). Try lookinh those up on wikipedia (I think I can't post this many links with my reputation?).
We started developing using the following open source stack: PostGIS, GeoServer, OpenLayers and so far we are happy with our decision, everything fits together beautifully,
You might be interested in the Open Geospatial Consortium Web Map Service (WMS) standard. It is a standard protocol for serving georeferenced map images over the Internet.
Consumers of web map services can "mash up" lots of different layers from different providers to create their own applications.
There are no exact standards regarding tile sizes, zoom levels and such because these are highly customizable.
There are technical standards regarding file, db and web service formats.
Some file formats of ESRI (i.e. Shapefiles) are de-facto standards, for better and for worse.
Others are open standards from the OGC, but don't expect to see all of these open formats in commercial products (i.e. even the ubiquitous KML format is not 100% supported in ESRI products).
There are two relevant OGC standards with regard to map tiling. The Web Map Tiling Service (WMTS) currently in candidate standard form and a proposed extension to WMS to add a cached/tiled version.
So the short answer is "no", there's no official standard yet.
The three major vendors have standardized on a defacto standard for tiling scheme's. A description of the scheme can be found here, among other places.
From what I know of the map providers you listed, they each have their own scheme... though I don't know for sure. You will likely have to check each individual provider for their tiling scheme. You will also need to make sure that their usage agreements let you use the tiles directly (as opposed to using any API they might provide).
This doesn't really speak to standards, but I thought it worth pointing out that the first three you mentioned, OpenStreetMap, CloudMadeMap, and OpenCycleMap, are all related projects.
OpenStreetMap is the project to collect the open mapping data, OpenCycleMap is an implementation that uses that data to a create a map tailored to Cyclists, and Cloudmade is a for-profit company founded by a number of the people who founded the OpenStreetMap project, and they also use its data.
When I wanted to add OpenStreetMap data to my website, I ended up using a (for now, free) tile serving service offered by Cloudmade. This saved me having to worry about generating tiles or serving them myself. I've had a good experience with it.