This should work out of the box with fiona.__version__ : '1.8.20'
(Python 3.6.9):
import fiona
from shapely.geometry import Point, mapping
my_schema = {
'geometry': 'Point',
'properties': {
'id': 'int',
'attribute1': 'float'},
}
my_id = 1
a_shapely_point = Point(9.17044, 45.45340)
with fiona.open('/path/to/shapefile.shp',
mode='w',
driver='ESRI Shapefile',
crs='epsg:4326', # <-------- Set CRS here using EPSG code!
schema=my_schema) as c:
c.write(
{
'geometry': mapping(a_shapely_point),
'properties': {'id': my_id, 'attribute1': 3.1415},
}
)
You can then check it has been correctly written with ogrinfo
for example:
$ cd /path/to
$ ogrinfo -so -ro -al shapefile.shp
INFO: Open of `shapefile.shp'
using driver `ESRI Shapefile' successful.
Layer name: test
Metadata:
DBF_DATE_LAST_UPDATE=2021-07-14
Geometry: Point
Feature Count: 1
Extent: (9.170440, 45.453400) - (9.170440, 45.453400)
Layer SRS WKT:
GEOGCRS["WGS 84",
DATUM["World Geodetic System 1984",
ELLIPSOID["WGS 84",6378137,298.257223563,
LENGTHUNIT["metre",1]]],
PRIMEM["Greenwich",0,
ANGLEUNIT["degree",0.0174532925199433]],
CS[ellipsoidal,2],
AXIS["latitude",north,
ORDER[1],
ANGLEUNIT["degree",0.0174532925199433]],
AXIS["longitude",east,
ORDER[2],
ANGLEUNIT["degree",0.0174532925199433]],
ID["EPSG",4326]]
Data axis to CRS axis mapping: 2,1
id: Integer64 (18.0)
attribute1: Real (24.15)
It also loads flawlessly in QGIS.
Doc on fiona.open()
: https://fiona.readthedocs.io/en/latest/fiona.html#fiona.open