[EDIT] The original source data is California State Plane Zone 2, i.e. EPSG:2226.
The following approach using ogr2ogr will perform a CSV to Shapefile conversion, including the coordinate transformation to Lat/Long (i.e. WGS84) that you're desiring. Basically I'm just adapting the approach demonstrated in this post.
For GDAL/OGR < 2.1 you'll need to create a simple VRT tile to model the CSV content for OGR. (You can do this in notepad, just make sure to save the file extension as
.vrt) This is the exact contents of the
dispatch.vrt file I created for this exercise.
<GeometryField encoding="PointFromColumns" x="X Coordinate" y="Y Coordinate"/>
A couple notes..
I reused the name of the downloaded .csv file, without the .csv
extension, as the layer name value.
I looked in the CSV for the
X Coordinate and
Y Coordinate field names, specifying those values, as OGR needs to know which
fields represent X and Y to resolve the geometry.
Next, I used the following ogr2ogr instruction to perform the conversion:
ogr2ogr -f "ESRI Shapefile" "C:/xGIS/Other/dispatch/sac-dispatch-4326.shp" "C:/xGIS/Other/dispatch/dispatch.vrt" -s_srs EPSG:32610 -t_srs EPSG:4326"
The -f "ESRI Shapefile" means I'm exporting to a shapefile, and the next value appearing in double-quotes is the shapefile I want to output.
The next file, the input, is the
.vrt we create in the first step.
Finally, -s_srs means, "the coordinate system of the source data" and the -s_srs means, "the coordinate system for the output data".
Ultimately the most difficult part of this exercise was identifying the correct projection of the source data. I used a process of elimination stemming from educated guesses. First I applied UTM10 as @Masjo suggested. But after plotting the resulting
.shp it was obviously in a different source. The next best bet, I thought, was to go for the most appropriate CA State Plane, in this case Zone 2. And as you can see in the image here, the points appear about where I would expect to find Sacramento:
For the fact-hunters out there, the source csv I downloaded from the OP's site had 329543 records in it, and ogr2ogr performed the conversion in just a few moments ..definitely less than a complete minute.