GithubHelp home page GithubHelp logo

Comments (1)

JamesParrott avatar JamesParrott commented on July 28, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.