GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community. Already on GitHub? Sign in to your account. I think most users would like to not be bothered by this issue when overwriting a file.
What do you think? We fiona. So I would suppose this to work. Just wondering if this isn't rather a fiona bug. Because you mentioned it may be a Fiona bug, I tested with Fiona 1. So the file is opened in write mode, and not in append mode. But still it gives problems if the file already exists. The first call works, after the second call so when the file already existsI get "ValueError: Null layer" Full error message:.
Skip to content. Dismiss Join GitHub today GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. Sign up. New issue.
Getting Started on Geospatial Analysis with Python, GeoJSON and GeoPandas
Jump to bottom. Copy link Quote reply. This comment has been minimized. Sign in to view. But certainly agree the behaviour is not as desired. Small reproducible example: import geopandas import shapely. Point x, x for x in gdf. Overwriting a file fails Sign up for free to join this conversation on GitHub.
It only takes a minute to sign up. This seems like a simple enough question, but I can't figure out how to convert a pandas DataFrame to a GeoDataFrame for a spatial join.
Convert the DataFrame's content e. Lat and Lon columns into appropriate Shapely geometries first and then use them together with the original DataFrame to create a GeoDataFrame. Since the geometries often come in the WKT format, I thought I'd include an example for that case as well:. Let's convert the pandas.
DataFrame into a geopandas. GeoDataFrame as follows:. Library imports and shapely speedups :. Using pandas. Sign up to join this community. The best answers are voted up and rise to the top.
Home Questions Tags Users Unanswered. Asked 4 years, 3 months ago. Active 3 months ago. Viewed 46k times.
Subscribe to RSS
Here is an example of what my data looks like using df. Active Oldest Votes. Lon, df. Martin Valgur Martin Valgur 1, 11 11 silver badges 16 16 bronze badges.How to Geocode and Convert a CSV File to GeoJSON (in Minutes!)
Thanks again! Gosh, thanks! It took me a while to figure this out! Latitude You can also set a crs or z e.The following Shapely methods and attributes are available on GeoSeries objects:. Returns a Series containing the area of each geometry in the GeoSeries. Returns a DataFrame with columns minxminymaxxmaxy values containing the bounds for each geometry.
See GeoSeries. Returns a Series containing the length of each geometry. Returns a Series of strings specifying the Geometry Type of each object. Returns a Series containing the distance to other. Returns a GeoSeries of cheaply computed points that are guaranteed to be within each geometry. Returns a Series of List representing the inner rings of each polygon in the GeoSeries. Returns a Series of dtype 'bool' with value True for empty geometries.
Returns a Series of dtype 'bool' with value True for features that are closed. Returns a Series of dtype 'bool' with value True for geometries that do not cross themselves. Returns a Series of dtype 'bool' with value True for geometries that are valid. Returns a Series of dtype 'bool' with value True if each geometry is approximately equal to other. Approximate equality is tested at all points to the specified decimal place precision.
See also equals. Returns a Series of dtype 'bool' with value True for each geometry that contains other. An object is said to contain other if its interior contains the boundary and interior of the other object and their boundaries do not touch at all. This is the inverse of within in the sense that the expression a. Returns a Series of dtype 'bool' with value True for each geometry that cross other. An object is said to cross other if its interior intersects the interior of the other but does not contain it, and the dimension of the intersection is less than the dimension of the one or the other.
Returns a Series of dtype 'bool' with value True for each geometry disjoint to other. An object is said to be disjoint to other if its boundary and interior does not intersect at all with those of the other. Returns a Series of dtype 'bool' with value True for each geometry equal to other. An object is said to be equal to other if its set-theoretic boundaryinteriorand exterior coincides with those of the other.
Returns a Series of dtype 'bool' with value True for each geometry that intersects other. An object is said to intersect other if its boundary and interior intersects in any way with those of the other. Returns a Series of dtype 'bool' with value True for each geometry that touches other.
An object is said to touch other if it has at least one point in common with other and its interior does not intersect with any part of the other. Returns a Series of dtype 'bool' with value True for each geometry that is within other. An object is said to be within other if its boundary and interior intersects only with the interior of the other not its boundary or exterior. This is the inverse of contains in the sense that the expression a. Returns a GeoSeries of the points in each geometry that are not in other.
Returns a GeoSeries of the intersection of points in each geometry with other. Returns a GeoSeries of the symmetric difference of points in each geometry with other. For each geometry, the symmetric difference consists of points in the geometry not in otherand points in other not in the geometry. Returns a GeoSeries of the union of points in each geometry with other. Returns a GeoSeries of geometries representing all points within a given distance of each geometric object.
The radius of the buffer.So you want to make a map using Python. In fact, I spent hours trawling through online tutorials looking for the easiest package to get started with making maps specifically choropleths.
And while there are lots of options to choose from, I eventually landed on Geopandas as the lowest barrier of entry. Geopandas dataframes are a lot like Pandas dataframes, so the two usually play nicely. Best of all, Geopandas allows you to create quick, standalone choropleth maps without many other dependencies and not too many lines of code!
As an aside, there are lots and lots of great ways to make maps out there notably, Datawrapper just added a GeoJson wrapper to load your own custom maps. However, most of these services come with some kind of restriction like not being able to download a file as svg.
Also, making maps in Python give you a couple unique benefits:. I use a Jupyter Notebook to house all the code which I highly recommend so you can preview renderingbut you do you. The London Datastore does a great job making lots of data public and accessible, and I found this page with a bunch of shape files with different levels of detail.
Nailed it. But the shapefile is only one layer of data. This will help to draw the map, but if we want to bind data to it we will need another dataset as well. This csv file has lots of columns that we can use as variables to visualise. Time to load in the. So now we have two dataframes ready to go. Those are really terrible column names. Much better. Now we need to merge our geodata with our cleaned London dataset.
First we need to do some prep work for Matplotlib. The stage has been set. Map time. And there it is!
Not perfect. But we have a choropleth.GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together. Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community. Already on GitHub? Sign in to your account. It would be great if this is geometry type is recognized in Altair to make a map easily. That's a really interesting idea I've not done much work with geopandas, so I'm not certain what it would take.
Would this be as simple as wrapping GeoDataframe.
I have no idea what it would entail I think integration with GeoPandas would be a great addition to Altair. GeoPandas can read through fiona a lot of different geo files and write them as GeoJSON which altair can then use for the illustration. I think a simple wrapper of the geometry series in the geodataframe to convert it to json would work. Thanks a lot! The discussion here is super helpful, esp. However, I cannot get what's shown here working, can you show me what does your usm.
Here is a more-altair, less-pandas way to make the same plot basically use alt. Personally I guess pd. I guess it would be great if we have some more examples to show how to plot local, non-pandas type of data for now I can only think of geo-related data? No the file is the same, but I had downloaded the file to disk first, before reading.
Yes, if the result is a GeoDataFrame it would be much cleaner and people won't run away yet. But it will crush if we add Timestamp type field to DataFrame.
To to avoid crashing it could be sanitized by alt. GeoData world. I could make a PR, if it is needed. To avoid static dependencies between Altair and GeoPandas I have published gpdvega as a connector. For what it's worth, I installed gpdvega and tried this with my own data, and found that it works well and as expected. My taste would be for tighter integration rather than yet-another-library, but I recognize that I'm not trying to maintain a rapidly evolving library in a rapidly evolving ecosystem.
If it won't be integrated, at least a reference in the altair docs would be great. While it surely is a good idea to use geopandas if you are into pandas-like analysis, it is a big dependency.
Supporting geo interface would allow users to stay with light-weight things like Fiona and Shapely for the geo analyses.GeoPandas is an open source project to make working with geospatial data in python easier.
GeoPandas extends the datatypes used by pandas to allow spatial operations on geometric types. Geometric operations are performed by shapely. Geopandas further depends on fiona for file access and descartes and matplotlib for plotting. The goal of GeoPandas is to make working with geospatial data in python easier.
It combines the capabilities of pandas and shapely, providing geospatial operations in pandas and a high-level interface to multiple geometries to shapely. GeoPandas enables you to easily do operations in python that would otherwise require a spatial database such as PostGIS. Report bugs, suggest features or view the source code on GitHub. For a quick question about a bug report or feature request, or Pull Request, head over to the gitter channel.
For less well defined questions or ideas, or to announce other projects of interest to GeoPandas users, … use the mailing list. Module Index. Search Page. GeoPandas 0. Getting Started Installation Examples Gallery. Developer Contributing to GeoPandas.Any arguments passed to geopandas.
In general, geopandas. Among other things, one can explicitly set the driver shapefile, GeoJSON with the driver keyword, or pick a single layer from a multi-layered file with the layer keyword:. If there are multiple datasets in a folder in the ZIP file, you also have to specify the filename:. Since geopandas is powered by Fiona, which is powered by GDAL, you can take advantage of pre-filtering when loading in larger datasets. This can be done geospatially with a geometry or bounding box.
You can also filter rows loaded with a slice. Read more at geopandas. Filter the rows loaded in from the file using an integer for the first n rows or a slice object. GeoDataFrames can be exported to many different standard formats using the geopandas. For a full list of supported formats, type import fiona; fiona. GeoDataFrame can contain more field types than supported by most of the file formats.
For example tuples or lists can be easily stored in the GeoDataFrame, but saving them to e. GeoPackage or Shapefile will raise a ValueError. Before saving to a file, they need to be converted to a format supported by a selected driver. GeoPandas latest. Note GeoDataFrame can contain more field types than supported by most of the file formats.
Read the Docs v: latest Versions latest stable v0.