The Google Map uses EPSG:3857 (aka Google Mercator) for displaying the map, but the coordinates you gathered from the map are given in lat/lon degrees. So these are not in mercator projection, which has (not real) metres as units, and you have to set EPSG:4326 WGS 84 as source fro your collected data.
For clarification:
A projection transforms the surface of the earth in a form that can be measured in linear units like metres or feet. A geodetic CRS like EPSG:4326 uses degrees to describe the position on the globe. Every projection is based on a geodetic CRS. So if you have degrees as units, rip of the projection information, and use +proj=longlat
with the +ellps
, +towgs84
and/or +datum
information. In most cases +datum
contains +ellps
and +towgs84
information internally.
This is how QGIS writes the proj-string and WKT with +towgs84-parameter:
+proj=longlat +ellps=bessel +towgs84=598.1,73.7,418.2,0.202,0.045,-2.455,6.7 +no_defs
GEOGCS["DHDN",DATUM["Deutsches_Hauptdreiecksnetz",SPHEROID["Bessel 1841",6377397.155,299.1528128,AUTHORITY["EPSG","7004"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,6.7],AUTHORITY["EPSG","6314"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4314"]]
But keep in mind that there is no overall value for converting any Bessel-1841-Data to WGS84.
For Germany, there were a lot of parametres published, until a NADgrid for the whole country was created. This applies the correct shift for every point inside Germany.
Other surveying authorities have done similar conversions, but with other values.
EDIT
There is a forum entry in Russian http://gis-lab.info/forum/viewtopic.php?t=9386
giving the following proj parameters:
+proj=tmerc +lat_0=55.6666666667 +lon_0=37.5 +x_0=0 +y_0=0 +k_0=1. +a=6377397 +rf=299.15 +towgs84=396,165,557.7,-0.05,0.04,0.01,0 +no_defs
Maybe you get lucky with those values.
Best Answer
The
epsg
code is only one way to reproject the dataset, but is not the only way. As mentioned here you can also use PROJ strings or dictionaries. You can use the to_dict() method of the rasterio CRS class.In your use case, you can reproject your geopandas dataframe like so:
In future versions of geopandas, you will be able to pass in the
raster.crs
directly to theto_crs()
function. This will occur after this PR is merged (https://github.com/geopandas/geopandas/pull/998).