I am trying to add a shapefile that is a map of Manhattan wards and then plot some latitude-longitude data points over this map. I'm new to ArcMap and GIS in general.
Here is exactly what I am doing:
I have a shapefile that shows Manhattan wards when I "Add Data" it into ArcMap. I then go to Geoprocessing -> ArcToolbox -> Data Management Tools -> Projections and Transformations -> Define Projection. I then input my .shp file and select NAD 1983 State Plane New York Long Isl FIPS 3104 (US Feet) for the coordinate system. After I do this, my shapefile displays just fine.
I then "Add Data" a .csv file which contains addresses and the latitude and longitude for these addresses. I then right-click on this layer and select "Display XY Data...". I then make the "X Field" latitude and the "Y Field" Longitude and use the same coordinate system as mentioned above. However, the points never display. I still only see the wards shapefile displayed. Both layers are present in the Layers menu, but only one is actually being displayed.
Alternatively, if I restart ArcMap and add the points first and display the XY data, I see that the points are displayed. After I add the shapefile, the shapefile does not display. I only see the points. It seems I can always display one thing but not the other.
Any thoughts on why this is happening?
I am using ArcMap version 10.2.0.3348 on a Windows OS.
I assume you are trying to overlay different spatial reference systems without telling arcmap which ones you use, so it cant reproject them to fit together.
When you say "latitude" and "longitude" you normally mean a geographic coordinate system like WGS84. Whilse X and Y often refer to a projected coordinate system like NAD. You defined NAD for both layers...I think you should define a geographic coordinate system for your CSV File, if it really contains geographic coordinates.
ArcMap uses the spatial reference system of the first layer which is added as the display SRS (you can change this afterwards for sure), thats why you saw your shapefile first and after restart and adding the points saw the points first.
If every layer has its SRS defined correctly, ArcMap will reproject them automatically to fit your display SRS. If you define the wrong SRS for one layer, Arcmap will do nothing for sure, because there is no need to reproject a NAD layer to NAD (although the coordinates have a completely different value domain and your points get drawed somewhere else....check this by right clicking on the CSV layer and "Zoom to Layer (extend)".
To make it more complicated: Because NAD83 and WGS84 rely on different geodetic datums, you have to transform. You find a predefined set of transformation parameters when you right click on "layers" in the "table of contents" on the left and select "properties". On the "coordinate system" sheet you see the "Transform" Button where you can select the transformation parameters which should be use to get from NAD83 to WGS84 and vice versa. A more detailed description can be found at this GIS SE
What is the best way to overlay a shapefile in Google Maps?
After some reading suggests that, converting shapefile into KML and overlaying KML in Google map is an option. If that is the case, how do I convert a shapefile into KMLs?
I believe there would be a few open source tools available for this conversion. Can anyone point to a tool to covert a shapefile to KML without any loss of data?
I like using (open source and gui friendly) Quantum GIS to convert the shapefile to kml.
Google Maps API supports only a subset of the KML standard. One limitation is file size.
To reduce your file size, you can Quantum GIS's "simplify geometries" function. This "smooths" polygons.
Then you can select your layer and do a "save as kml" on it.
If you need to process a bunch of files, the process can be batched with Quantum GIS's ogr2ogr command from osgeo4w shell.
Finally, I recommend zipping your kml (with your favorite compression program) for reduced file size and saving it as kmz.
as of 12.03.2019 FusionTables is no more...
Import the Shapefile into Google FusionTables ( http://www.google.com/fusiontables ) using http://www.shpescape.com/ and from there you can use the data in a number of ways, eg. display it using GoogleMaps.
I would not use KML. Instead, use GeoJSON which you can natively consume in Google Maps API now. It is a newer feature that didn't exist from the original responses.
In any case, simply open the SHP file in Quantum GIS, and then you can output it in any format you like (KML, GeoJSON).
If you are using Google Maps for Work, I found a premium extension that handles loading shapefiles directly where you can just connect direct to the shapefile that you generate from ESRI. I did a search on the CMaps site and found this snippet which loaded US by state shapefile: https://gmapsplugin.net/cmapsanalytics/assets/shapes/usstates.shp
var cMap = new centigon.locationIntelligence.MapView();
cMap.key([your_api_key]);
cMap.layerNames(["Basic Shapes"]);
cMap.dbfKeys([['Alabama','Alaska','Arizona','Arkansas','California','Colorado','Connecticut','Delaware','District of Columbia','Florida','Georgia','Hawaii','Idaho','Illinois','Indiana','Iowa','Kansas','Kentucky','Louisiana','Maine','Maryland','Massachusetts','Michigan','Minnesota','Mississippi','Missouri','Montana','Nebraska','Nevada','New Hampshire','New Jersey','New Mexico','New York','North Carolina','North Dakota','Ohio','Oklahoma','Oregon','Pennsylvania','Rhode Island','South Carolina','South Dakota','Tennessee','Texas','Utah','Vermont','Virginia','Washington','West Virginia','Wisconsin','Wyoming']]);
cMap.userShapeKeys([['Massachusetts','Minnesota','Montana','North Dakota','Hawaii','Idaho','Washington','Arizona','California','Colorado','Nevada','New Mexico','Oregon','Utah','Wyoming','Arkansas','Iowa','Kansas','Missouri','Nebraska','Oklahoma','South Dakota','Louisiana','Texas','Connecticut','New Hampshire','Rhode Island','Vermont','Alabama','Florida','Georgia','Mississippi','South Carolina','Illinois','Indiana','Kentucky','North Carolina','Ohio','Tennessee','Virginia','Wisconsin','West Virginia','Delaware','District of Columbia','Maryland','New Jersey','New York','Pennsylvania','Maine','Michigan','Alaska']]);
cMap.labels([['Massachusetts','Minnesota','Montana','North Dakota','Hawaii','Idaho','Washington','Arizona','California','Colorado','Nevada','New Mexico','Oregon','Utah','Wyoming','Arkansas','Iowa','Kansas','Missouri','Nebraska','Oklahoma','South Dakota','Louisiana','Texas','Connecticut','New Hampshire','Rhode Island','Vermont','Alabama','Florida','Georgia','Mississippi','South Carolina','Illinois','Indiana','Kentucky','North Carolina','Ohio','Tennessee','Virginia','Wisconsin','West Virginia','Delaware','District of Columbia','Maryland','New Jersey','New York','Pennsylvania','Maine','Michigan','Alaska']]);
cMap.polyDataSources([centigon.locationIntelligence.CMapAnalytics.DATA_PROVIDERS.SHAPE_DATAPROVIDER]);
cMap.layerTypes([centigon.mapping.Layer.TYPE.POLY]);
cMap.locations([["https://gmapsplugin.net/cmapsanalytics/assets/shapes/usstates.shp"]]);
cMap.panTo("USA");
cMap.zoomLevel(3);
Do you mean shapefile as in an Esri shapefile? Either way, you should be able to perform the conversion using ogr2ogr, which is available in the GDAL packages. You need the .shp file and ideally the corresponding .dbf file (which will provide contextual information).
Also, consider using a tool like MapShaper to reduce the complexity of your shapefiles before transforming them into KML; you'll reduce filesize substantially depending on how much detail you need.
Free "Export to KML" script for ArcGIS 9
Here is a list of available methods that someone found.
Also, it seems to me that the most efficient representation of a polygon layer is by using Google Maps API's polyline encoding, which significantly compresses lat-lng data. But getting into that format takes work: use ArcMap to export Shape as lat/lng coordinates, then convert into polylines using Google Maps API.
Just to update these answers, ESRI has included this tool, known as Layer to KML in ArcMap 10.X. Also, a Map to KML tool exists.
Simply import the desired layer (vector or raster) and choose the output location, resolution, etc. Very simple tool.
2018 already... I've found this fantastic online tool http://mapshaper.org/ to convert from ESRI shapefiles to SVG, TopoJSON, GeoJSON.
Here is the explanation of how to use it https://www.statsilk.com/maps/convert-esri-shapefile-map-geojson-format
Fast and straightforward! :)