Comments (1)
Nikolaus, does PyShp claim to support numpy arrays?
The only examples I can find in the PyShp docs, show that a point passed to a shapefile.Writer method, must be a native Python list of numbers, not a numpy array.
Make a feature request issue for numpy.array support if you like, to see if there's any support or enthusiasm for adding that. In my opinion, as PyShp still supports Python 2 as well as Python 3, the old Python 2 versions of numpy ought to be looked at as well. That could uncover further 'bug's, and fixing them (adding support for numpy arrays) could easily be a lot more work than generalising a few if statements as in your fix.
Anyway, I have reproduced this (Python 3.11.4, Windows 11, x86, numpy==1.26.0, pyshp==2.3.1), and show the cause of the error below:
import numpy as np
import shapefile as shp
def f(convert = None, file_name = 'test_polygon_bug_261.shp'):
points = [[0,0], [1,0],[1,1]]
if convert is not None:
points = [convert(point) for point in points]
with shp.Writer(file_name, shp.POLYGON) as w:
w.field('name', 'C')
w.poly([points])
w.record('triangle')
f()
f(convert = np.array)
Equality and inequality on numpy arrays is evaluated element wise. The error in _shapeparts in:
if part[0] != part[-1]:
comes when numpy.array.__bool__
is called on an array of length 2 or more, e.g.:
>>> l = [0,0]
>>> np.array(l) == np.array(l)
array([ True, True])
>>> assert np.array(l) == np.array(l)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
from pyshp.
Related Issues (20)
- ValueError when reading shapefile from ZIP archive HOT 3
- logging should use named logger rather than root logger HOT 1
- Document the reason for first field always being a DeletionFlag HOT 2
- "README: Testing" section seems out of date HOT 1
- add/modify test routine for running pytest / ship test file with installation HOT 2
- pyshp 2.3 closing bytesio objects with Writer HOT 5
- Add read geojson capability HOT 1
- Support for getting encoding from .cpg files HOT 2
- Enhance combination with shapely HOT 2
- Why was Writer.save() removed? HOT 1
- How to modify the shape value HOT 1
- struct.error: unpack requires a buffer of 32 bytes HOT 2
- How to get the field name for data? HOT 1
- Inconsistent bounding box filtering HOT 1
- Build marked as failing. Tests are not running in CI. Github /actions/setup-python no longer supports Python 2.7. HOT 1
- PyShp's own Example from README.md fails under Doctest with Python 2.7. .__geo_interface__ = behaves differently in Python 2? HOT 1
- Doc test in README.md fails due to undefined variable HOT 1
- Run tests on Python 3.10 and higher versions (as well as 2.7, 3.5, ..., 3.9)
- Interest in I/O methods interfacing geopandas objects? HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pyshp.