Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Filter by Categories
ArcGIS Pro

Creating shapefiles in QGIS

Making a new Shapefile in QGIS

New Shapefile Layer tool

Not sure what a shapefile is? Click here!

To create a shapefile in QGIS, you can use the “New Shapefile Layer” tool. Here’s how:

  1. In QGIS, go to “Layer” > “Create Layer” > “New Shapefile Layer” in the top menu.
  2. In the “New Shapefile” dialog, specify the name and location for the new shapefile.
  3. Select the geometry type for the shapefile from the “Type” dropdown (e.g. point, line, polygon).
  4. Click the “OK” button to create the shapefile.

This will create an empty shapefile with no features. You can then add features to the shapefile by using tools such as the “Add Feature” button in the attribute table, or by drawing the features on the map canvas.

A few more options for creating shapefiles in QGIS

Yes, there are several other ways to create a shapefile in QGIS. Here are a few options:

  1. You can create a shapefile by digitizing features on the map canvas. To do this, you can use tools such as the “Add Feature” button in the attribute table, or the various drawing tools in the “Draw” menu.
  2. You can create a shapefile by importing data from another file or database. QGIS supports a wide range of file formats, including CSV, Excel, KML, and GeoJSON. To import data, you can use the “Add Vector Layer” tool in the “Layer” menu, or the “Quick Import” button in the “Data Source Manager” window.
  3. You can create a shapefile by converting another vector layer. For example, if you have a KML or GeoJSON file that you want to convert to a shapefile, you can use the “Save As” tool in the “Layer” menu to save the layer as a shapefile.

How to create a shapefile from the command line in QGIS

you can create a shapefile from the command line in QGIS by using the ogr2ogr command from the GDAL library. Here’s an example of how you can use ogr2ogr to create a new shapefile from an existing file:

ogr2ogr -f "ESRI Shapefile" output.shp input.kml

This command will create a new shapefile called “output.shp” from the input KML file “input.kml”.

You can also use ogr2ogr to create a shapefile from a database or other data source. For example, to create a shapefile from a PostGIS database, you can use a command like this:

ogr2ogr -f "ESRI Shapefile" -dsco FORMAT=Shapefile -lco ENCODING=UTF-8 output.shp "PG:host=localhost user=username password=password dbname=database"

How to create a shapefile using python in QGIS

To create a shapefile using the Python QGIS module (also known as PyQGIS), you can use the QgsVectorFileWriter class from the QgsVectorFileWriter module. Here’s an example of how you can use QgsVectorFileWriter to create a new point shapefile:

# Import the QgsVectorFileWriter module
from qgis.core import QgsVectorFileWriter

# Create a new point layer
layer = QgsVectorLayer("Point", "layer_name", "memory")

# Add a field to the layer
field = QgsField("field_name", QVariant.String)

# Create a new feature and set the values for the fields
feature = QgsFeature()

# Create a point geometry and set it as the feature's geometry
point = QgsGeometry.fromPointXY(QgsPointXY(x, y))

# Add the feature to the layer

# Save the layer to a shapefile
error = QgsVectorFileWriter.writeAsVectorFormat(layer, "/path/to/shapefile/directory/shapefile.shp", "utf-8",, "ESRI Shapefile")
if error == QgsVectorFileWriter.NoError:
    print("Shapefile created successfully")
    print("Error creating shapefile")

This code will create a new point shapefile called “shapefile.shp” in the specified directory, with a single point feature and a single field. You can modify the code to create other types of shapefiles (e.g. line or polygon) or to add additional features and fields.

About the Author
I'm Daniel O'Donohue, the voice and creator behind The MapScaping Podcast ( A podcast for the geospatial community ). With a professional background as a geospatial specialist, I've spent years harnessing the power of spatial to unravel the complexities of our world, one layer at a time.

Leave a Reply