Best Python GIS library? [closed]

2024/9/20 12:13:34

I am looking for recommendations as to the best Python GIS library currently available based on the following (subjective) criteria:

  • Ease of use / Pythonic interface / Documentation
  • Power in terms of available features today, and potentially in the future (is it still being developed or dead).

So far I have looked at, in some detail:

  • GEOS/OGR/GDAL: So far I have been looking at this library, using this webpage as a tutor. My initial reaction is that while some things have been easy, already I have been running into a few potholes. For example, if I want to create a MultiPoint geometry and determine which points are inside a Polygon using the Union() function, I run into problems, but the Python bindings are just generated by SWIG and all of the documentation is computer generated. I made this post because it struck me that there might be better libraries out there.

  • GeoDjango: Well this is again based on the GEOS C/C++ library, but it appears the interface might be intuitive, and possibly better documented. I also have the sense it is being actively updated. I'm not interested in web applications, but this doesn't seem to be an issue?

  • Shapely: Again based on the GEOS library, seems to have a Pythonic interface. Not sure about feature support or development status.

Others? Thoughts? Thanks in advance!

Answer

In 2011, this is how you check a project's vital signs: https://github.com/sgillies/shapely/commits/master/.

In my honest opinion (disclaimer: I am the lead developer and manual author), Shapely's documentation is right up there with any other GIS software; maybe not quite as good as the PostGIS manual (crême de la crême), but better than ArcPy's, and much better than GEOS's.

https://en.xdnf.cn/q/72503.html

Related Q&A

Build a class with an attribute in one line

How do I write a one-liner for the following? class MyClass(): content = {} obj = MyClass()

Python Imports, Paths, Directories Modules

Let me start by saying Ive done extensive research over the course of the past week and have not yet found actual answers to these questions - just some fuzzy answers that dont really explain what is g…

Finding location in code for numpy RuntimeWarning

I am getting warnings like these when running numpy on reasonably large pipeline. RuntimeWarning: invalid value encountered in true_divideRuntimeWarning: invalid value encountered in greaterHow do I fi…

Django, Angular, DRF: Authentication to Django backend vs. API

Im building an app with a Django backend, Angular frontend, and a REST API using Django REST Framework for Angular to consume. When I was still working out backend stuff with a vanilla frontend, I used…

Django view testing

Im trying to figure out if there is a quick way to test my django view functions form either the python or django shell. How would I go about instantiating and passing in faux HTTPrequest object?

Remove non-ASCII characters from string columns in pandas

I have panda dataframe with multiple columns which mixed with values and unwanted characters. columnA columnB columnC ColumnD \x00A\X00B NULL \x00C\x00D 123 \x00E\X00F…

Open source Twitter clone (in Ruby/Python) [closed]

Closed. This question is seeking recommendations for books, tools, software libraries, and more. It does not meet Stack Overflow guidelines. It is not currently accepting answers.We don’t allow questi…

What is the best way to connect to a Sybase database from Python?

I am trying to retrieve data in a Sybase data base from Python and I was wondering which would be the best way to do it. I found this module but may be you have some other suggestions: http://python-sy…

How to get N random integer numbers whose sum is equal to M

I want to make a list of N random INTEGER numbers whose sum is equal to M number.I have used numpy and dirichlet function in Python, but this generate double random number array, I would like to genera…

Why sqlalchemy declarative base object has no attribute query?

I created declarative table. from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, String from sqlalchemy.dialects.postgresql import UUID import uuidBase = declarative_…