I've read several of the posts on here pertaining to MMQGIS Create Grid Layer option, but I have not found information on how to make the grid based on meters veres degrees. I know how to manipulate the CRS for shp layers to adapt to meters, but I'm not quite sure on how to do it within this context.

Specifically, I'd like to make a hex grid with roughly a radius of 804.672 meters for each hex. The grid would have to cover an area that is about a 48280.3 meter radius.

Am I doomed to inaccurate degree measurements of the Hex Grid, or is there a solution to this problem. I have a basic proficiency with QGIS. Thanks!


This "doesn't" work as it is an apples to oranges comparison. Meters is length. Degrees latitude or longitude are an measurement of angle. And the length of a degree of geodetic latitude varies because the earth is not a perfect sphere.

That said, it can be done: "Since the variation in lengths of degrees of latitude varies by only 1.13 kilometers (0.7 mile), the standard figure of 111.325 kilometers (69.172 miles) can be used. For example, anywhere on the earth, the length represented by 3 degrees of latitude is (3 * 111.325) 333.975 kilometers."

The problem is much more pronounced for longitude (111.32 km at 0 degrees and 0 km at 90 degrees). Check section 3 of this source for a more complete explanation: http://www.ncgia.ucsb.edu/giscc/units/u014/u014.html

Also, there is a good explanation here: https://stackoverflow.com/questions/4102520/how-to-transform-a-distance-from-degrees-to-metres


As @mkennedy commented: Just use an appropriate projected CRS.

MMQGIS docs tell us

The defaults when the dialog is brought up are set to cover the full extent in the project coordinate reference system of the current display that is active when the plugin is invoked.

So set up the project using a projected CRS, zoom to the extent you want the grid to cover and specify the cell size you want. In the generated Shapefile, verify that the project CRS has been correctly copied to the .prj file. If MMQGIS fails to write the correct .prj file, you can manually replace it by pasting the correct definition. You can find definition strings for all kinds of CRS on spatialreference.org.


My best advice is to use R (if you are also an R user).

I found out that when changing the projection in QGIS, the command didn't always actually changed the projection, which was sometimes quite confusing, most of the time I had to triple-check if the projection was completed successfully.

In R the story is much simpler, the following lines of command change the projection with a higher degree of certainty (from degrees to meters for ex.):

# Libraries required

#Get current coordinate system

# Project coordinate system to WGS84 in meter units
new_projection.sf <- st_transform(shapefile_name.sf, "+proj=utm +zone=18 +ellps=WGS84 +datum=WGS84 +units=m +no_defs") 

#Check updated CRS

Finally, you can export the shapefile and continue working on MMQGIS and make your grid layer in meters.

NOTE: It is important to highlight that the zone will depend on the country/zone you are working with, in my case the zone was 18N. You can check which UTM zone you should type in using the following link: https://www.geoplaner.com/

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.