Giter VIP home page Giter VIP logo

alphashape's People

Contributors

bellockk avatar bertsky avatar dependabot[bot] avatar hanatok avatar ngodber avatar tigerhawkvok avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

alphashape's Issues

Incompatible with shapely 2.0

  • Alpha Shape Toolbox version: 1.3.1
  • Python version: 3.10.8
  • Operating System: Ubuntu 22.10

Description

After upgrading to shapely 2.0, when I am trying to get the optimized alpha from a set of points, I encounter the following error:

Traceback (most recent call last):
  File "/home/hanatok/HDD/Documents/playground/python/test_alphashape/./test.py", line 5, in <module>
    alpha = 0.95 * alphashape.optimizealpha(points)
  File "/home/hanatok/mambaforge/lib/python3.10/site-packages/alphashape/optimizealpha.py", line 100, in optimizealpha
    if _testalpha(points, test_alpha):
  File "/home/hanatok/mambaforge/lib/python3.10/site-packages/alphashape/optimizealpha.py", line 41, in _testalpha
    return all([polygon.intersects(point) for point in points])
TypeError: 'MultiPoint' object is not iterable

After debugging I have found that the issue is related to the changes in shapely 2.0. If I apply the following patch:

diff --git a/alphashape/optimizealpha.py b/alphashape/optimizealpha.py
index 6c0b72f..a3391c2 100644
--- a/alphashape/optimizealpha.py
+++ b/alphashape/optimizealpha.py
@@ -37,7 +37,7 @@ def _testalpha(points: Union[List[Tuple[float]], np.ndarray], alpha: float):
     polygon = alphashape(points, alpha)
     if isinstance(polygon, shapely.geometry.polygon.Polygon):
         if not isinstance(points, MultiPoint):
-            points = MultiPoint(list(points))
+            points = MultiPoint(list(points)).geoms
         return all([polygon.intersects(point) for point in points])
     elif isinstance(polygon, trimesh.base.Trimesh):
         return len(polygon.faces) > 0 and all(

then it works as expected.

What I Did

The traceback is attached above.

import alphashape
import numpy as np

points = np.array([[1, 1], [1, -1], [-1, 1], [-1, -1]])
alpha = 0.95 * alphashape.optimizealpha(points)
hull = alphashape.alphashape(points, alpha)
hull_pts = hull.exterior.coords.xy

What I Expected

The above code runs without throwing the traceback.

Acceptance Criteria

No runtime exceptions.

Examples from documentation are not working

  • Alpha Shape Toolbox version: 1.3.1
  • Python version: 3.8.16
  • Operating System: Windows Subsystem for Linux

Description

I tryied the simple example proposed in the documentation (read also 1.1.2 from the Alphashape documentation)

What I Did

The code I tried:

`
import alphashape
import matplotlib.pyplot as plt
from descartes import PolygonPatch

points = [(0., 0.), (0., 1.), (1., 1.), (1., 0.), (0.5, 0.5)]
alpha = 0.2
alpha_shape = alphashape.alphashape(points, alpha)
fig, ax = plt.subplots()
ax.scatter(*zip(*points))
ax.add_patch(PolygonPatch(alpha_shape, alpha=.2))
plt.show()
`

I obtained the following:
IndexError: too many indices for array: array is 0-dimensional, but 2 were indexed

Additional notes:

  • All modules are updated.

ValueError in PyPi 3D Alphashape Default Example on Windows

  • Alpha Shape Toolbox version:
  • Python version: 3.6.3
  • Operating System: Windows 10 Pro Version 20H2

Description

I was trying to recreate verbatim the 3D alphashape example found on https://pypi.org/project/alphashape/ (about 1/3 down the page). I copied the code into a Jupyter notebook, and it ran correctly, but a recent update (from a sub-package?) causes a ValueError described with photos below.

What I Did

import alphashape
import pandas as pd
import matplotlib.pyplot as plt

points_3d = [
    (0., 0., 0.), (0., 0., 1.), (0., 1., 0.),
    (1., 0., 0.), (1., 1., 0.), (1., 0., 1.),
    (0., 1., 1.), (1., 1., 1.), (.25, .5, .5),
    (.5, .25, .5), (.5, .5, .25), (.75, .5, .5),
    (.5, .75, .5), (.5, .5, .75)
]

df_3d = pd.DataFrame(points_3d, columns=['x', 'y', 'z'])

fig = plt.figure()
ax = plt.axes(projection='3d')
ax.scatter(df_3d['x'], df_3d['y'], df_3d['z'])
plt.show()

alpha_shape = alphashape.alphashape(points_3d, 1.1)
alpha_shape.show()

What I Expected

The same output as indicated on https://pypi.org/project/alphashape/ about 1/3 down.
image

The points plot properly in 3D space, however the call to alphashape.alphashape() returns the following error:
image


ValueError Traceback (most recent call last)
in
13 plt.show()
14
---> 15 alpha_shape = alphashape.alphashape(points_3d, 1.1)
16 alpha_shape.show()

~\Anaconda3\lib\site-packages\alphashape\alphashape.py in alphashape(points, alpha)
72
73 # Loop over triangles
---> 74 for ia, ib, ic in tri.vertices:
75 pa = coords[ia]
76 pb = coords[ib]

ValueError: too many values to unpack (expected 3)

Acceptance Criteria

Receive the same output as listed on https://pypi.org/project/alphashape/
Note1: I have tried this on a Macintosh system, and the correct output results were obtained for the same code, running from the same Jupyter Notebook.
Note2: Prior to running the notebook, I performed a global update via anaconda command prompt: conda update --all

Create an Example Gallery in the Documentation

  • Alpha Shape Toolbox version: v0.1.7
  • Python version: v3.7.3
  • Operating System: Fedora 29

Description

Documentation should include an example gallery for creating scripts and plots utilizing this toolbox.

What I Did

Viewed the documentation.

What I Expected

To see usage examples of the toolbox.

Acceptance Criteria

Documentation will include an example gallery with at least one example.

TypeError: 'MultiPoint' object is not iterable

Running alphashape 1.3.1 with Shapely 2.x returns TypeError: 'MultiPoint' object is not iterable error. This could be fixed by using the .geoms attribute in optimizealpha.py, however it returns a ZeroDivisionError: float division by zero in alphashape.py

Does anyone have a fix for running it with Shapely 2?

conda install cannot solve environment

  • Alpha Shape Toolbox version: NA
  • Python version: 3.9
  • Operating System: MacOS

Description

using conda install -c conda-forge doesn't install alphashape as intended. conda hangs for more than 10 minutes on the solve.

What I Did

conda install -c conda-forge/label/cf202003 alphashape
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: | failed

CondaError: KeyboardInterrupt

^C 
conda list 
# packages in environment at /Users/matthiasf/miniconda/miniconda3:
#
# Name                    Version                   Build  Channel
apptools                  5.1.0              pyhd3eb1b0_0  
arviz                     0.11.2             pyhd3eb1b0_0  
asteval                   0.9.23             pyhd8ed1ab_0    conda-forge
blas                      1.0                         mkl  
bottleneck                1.3.2            py39he3068b8_1  
brotli                    1.0.9                hb1e8313_2  
brotlipy                  0.7.0           py39h9ed2024_1003  
bzip2                     1.0.8                h1de35cc_0  
c-ares                    1.17.1               h9ed2024_0  
ca-certificates           2021.10.26           hecd8cb5_2  
certifi                   2021.10.8        py39hecd8cb5_0  
cffi                      1.14.6           py39h2125817_0  
cftime                    1.5.1.1          py39h67323c0_0  
charset-normalizer        2.0.4              pyhd3eb1b0_0  
conda                     4.11.0           py39hecd8cb5_0  
conda-package-handling    1.7.3            py39h9ed2024_1  
configobj                 5.0.6            py39hecd8cb5_1  
corner                    2.2.1              pyhd8ed1ab_0    conda-forge
cryptography              35.0.0           py39h2fd3fbb_0  
curl                      7.78.0               h7bc2e8c_0  
cycler                    0.11.0             pyhd3eb1b0_0  
cython                    0.29.24          py39he9d5cce_0  
dbus                      1.13.18              h18a8e69_0  
double-conversion         3.1.5                haf313ee_1  
eigen                     3.3.7                h04f5b5a_0  
emcee                     3.1.1              pyh8a188c0_0    conda-forge
envisage                  6.0.1              pyhd3eb1b0_0  
expat                     2.4.1                h23ab428_2  
ffmpeg                    4.3.2                h4dad6da_0    conda-forge
fonttools                 4.25.0             pyhd3eb1b0_0  
freetype                  2.11.0               hd8bbffd_0  
future                    0.18.2           py39hecd8cb5_1  
gettext                   0.21.0               h7535e17_0  
giflib                    5.2.1                haf1e3a3_0  
gl2ps                     1.4.2                h4cff582_0    conda-forge
glew                      2.1.0                h046ec9c_2    conda-forge
glib                      2.69.1               hdf23fa2_0  
gmp                       6.2.1                h23ab428_2  
gnutls                    3.6.15               hed9c0bf_0  
h5py                      3.6.0            py39h4a1dd59_0  
hdf4                      4.2.15               hefd3b78_3    conda-forge
hdf5                      1.10.6          nompi_hc5d9132_1114    conda-forge
icu                       68.1                 h23ab428_0  
idna                      3.3                pyhd3eb1b0_0  
intel-openmp              2021.4.0          hecd8cb5_3538  
jbig                      2.1                  h4d881f8_0  
jpeg                      9d                   h9ed2024_0  
jsoncpp                   1.9.4                hf7b0b51_2  
kiwisolver                1.3.1            py39h23ab428_0  
krb5                      1.19.2               hcd88c3b_0  
lame                      3.100                h1de35cc_0  
lcms2                     2.12                 hf1fd2bf_0  
lerc                      2.2.1                h046ec9c_0    conda-forge
libblas                   3.9.0              11_osx64_mkl    conda-forge
libcblas                  3.9.0              11_osx64_mkl    conda-forge
libclang                  11.1.0          default_he082bbe_1    conda-forge
libcurl                   7.78.0               hb8e4fae_0  
libcxx                    12.0.0               h2f01273_0  
libdeflate                1.7                  h35c211d_5    conda-forge
libedit                   3.1.20210910         hca72f7f_0  
libev                     4.33                 h9ed2024_1  
libffi                    3.3                  hb1e8313_2  
libgfortran               5.0.0           9_3_0_h6c81a4c_23    conda-forge
libgfortran5              9.3.0               h6c81a4c_23    conda-forge
libiconv                  1.16                 h1de35cc_0  
libidn2                   2.3.2                h9ed2024_0  
liblapack                 3.9.0              11_osx64_mkl    conda-forge
libllvm11                 11.1.0               h9b2ccf5_0  
libnetcdf                 4.8.0           nompi_hb4d10b0_103    conda-forge
libnghttp2                1.46.0               ha29bfda_0  
libogg                    1.3.5                h9ed2024_1  
libpng                    1.6.37               ha441bb4_0  
libpq                     13.3                 hea3049e_0    conda-forge
libssh2                   1.9.0                ha12b0ac_1  
libtasn1                  4.16.0               h9ed2024_0  
libtheora                 1.1.1                hb4e5f40_1  
libtiff                   4.3.0                h1167814_1    conda-forge
libunistring              0.9.10               h9ed2024_0  
libvorbis                 1.3.7                haf1e3a3_0  
libwebp                   1.2.0                hacca55c_0  
libwebp-base              1.2.0                h9ed2024_0  
libxml2                   2.9.12               h93ec3fd_0    conda-forge
libzip                    1.8.0                h8b0c345_1    conda-forge
llvm-openmp               12.0.0               h0dcd299_1  
lmfit                     1.0.3              pyhd8ed1ab_0    conda-forge
loguru                    0.5.3            py39h6e9494a_2    conda-forge
lz4-c                     1.9.3                h23ab428_1  
matplotlib                3.5.0            py39hecd8cb5_0  
matplotlib-base           3.5.0            py39h4f681db_0  
mayavi                    4.7.2            py39h4634037_5    conda-forge
mkl                       2021.4.0           hecd8cb5_637  
mkl-service               2.4.0            py39h9ed2024_0  
mkl_fft                   1.3.1            py39h4ab4a9b_0  
mkl_random                1.2.2            py39hb2f4e1b_0  
mpi                       1.0                       mpich  
mpi4py                    3.1.2            py39ha81d895_0    conda-forge
mpich                     3.4.2              hd33e60e_100    conda-forge
munkres                   1.1.4                      py_0  
mysql-common              8.0.25               h694c41f_2    conda-forge
mysql-libs                8.0.25               h115446f_2    conda-forge
ncurses                   6.3                  hca72f7f_2  
netcdf4                   1.5.7           nompi_py39hfa5ec60_100    conda-forge
nettle                    3.7.3                h230ac6f_1  
nspr                      4.30                 hcd9eead_0    conda-forge
nss                       3.69                 h31e2bf1_1    conda-forge
numexpr                   2.7.3            py39h5873af2_1  
numpy                     1.21.2           py39h4b4dc7a_0  
numpy-base                1.21.2           py39he0bd621_0  
olefile                   0.46               pyhd3eb1b0_0  
openh264                  2.1.1                hfd3ada9_0    conda-forge
openssl                   1.1.1l               h9ed2024_0  
packaging                 21.3               pyhd3eb1b0_0  
pandas                    1.3.4            py39h743cdd8_0  
pcre                      8.45                 h23ab428_0  
pillow                    8.4.0            py39h98e4679_0  
pip                       21.2.4           py39hecd8cb5_0  
proj                      7.2.0                h78d1473_2    conda-forge
pugixml                   1.11.4               he49afe7_0    conda-forge
pycosat                   0.6.3            py39h9ed2024_0  
pycparser                 2.21               pyhd3eb1b0_0  
pyface                    7.3.0            py39hecd8cb5_1  
pygments                  2.10.0             pyhd3eb1b0_0  
pyopenssl                 21.0.0             pyhd3eb1b0_1  
pyparsing                 3.0.4              pyhd3eb1b0_0  
pyqt                      5.12.3           py39h6e9494a_7    conda-forge
pyqt-impl                 5.12.3           py39hef7122c_7    conda-forge
pyqt5-sip                 4.19.18          py39hd8f94c5_7    conda-forge
pyqtchart                 5.12             py39hef7122c_7    conda-forge
pyqtwebengine             5.12.1           py39hef7122c_7    conda-forge
pysocks                   1.7.1            py39hecd8cb5_0  
python                    3.9.7                h88f2d9e_1  
python-dateutil           2.8.2              pyhd3eb1b0_0  
python.app                3                py39hca72f7f_0  
python_abi                3.9                      2_cp39    conda-forge
pytz                      2021.3             pyhd3eb1b0_0  
qt                        5.12.9               h126340a_4    conda-forge
readline                  8.1                  h9ed2024_0  
requests                  2.26.0             pyhd3eb1b0_0  
ruamel_yaml               0.15.100         py39h9ed2024_0  
schwimmbad                0.3.2            py39h6e9494a_1    conda-forge
scipy                     1.7.1            py39h056f1c0_0    conda-forge
setuptools                58.0.4           py39hecd8cb5_0  
setuptools-scm            6.3.2              pyhd3eb1b0_0  
six                       1.16.0             pyhd3eb1b0_0  
sqlite                    3.36.0               hce871da_0  
tbb                       2020.2               h940c156_4    conda-forge
tbb-devel                 2020.2               h940c156_4    conda-forge
tk                        8.6.11               h7bc2e8c_0  
tomli                     1.2.2              pyhd3eb1b0_0  
tornado                   6.1              py39h9ed2024_0  
tqdm                      4.62.3             pyhd3eb1b0_1  
traits                    6.2.0            py39h9ed2024_0  
traitsui                  7.2.1              pyhd3eb1b0_0  
typing-extensions         3.10.0.2             hd3eb1b0_0  
typing_extensions         3.10.0.2           pyh06a4308_0  
tzdata                    2021e                hda174b7_0  
uncertainties             3.1.6              pyhd8ed1ab_0    conda-forge
urllib3                   1.26.7             pyhd3eb1b0_0  
utfcpp                    3.2.1                hecd8cb5_0  
vtk                       9.0.3           no_osmesa_py39h9af63fb_100    conda-forge
wheel                     0.37.0             pyhd3eb1b0_1  
x264                      1!161.3030           h0d85af4_1    conda-forge
xarray                    0.19.0             pyhd3eb1b0_1  
xz                        5.2.5                h1de35cc_0  
yaml                      0.2.5                haf1e3a3_0  
zlib                      1.2.11               h1de35cc_3  
zstd                      1.5.0                hcb37349_1  

What I Expected

the installation of the alphashape package

Acceptance Criteria

installation must be possible in less than a minute

How to get original indexes back?

Hi. Great job with alphashape!

I am doing alpha_shape = alphashape.alphashape(points, 5), where points is a Nx3 numpy array.

I found that if I do alpha_shape.exterior.coords.xy I can retrieve the coordinates of the points in the alpha shape contour. I was wondering whether there is a way to retrieve instead the original indexes relative to points.

Many thanks,

Documentation issue

  • Alpha Shape Toolbox version:
  • Python version: 3.11
  • Operating System: Windows 11

I followed the documentation example. https://github.com/bellockk/alphashape#readme
It seems there is a compatibility issue with PolygonPatch.

Here's what I ran. I expected a plot but got an error.

import os
import sys
import pandas as pd
import numpy as np
from descartes import PolygonPatch
import matplotlib.pyplot as plt
sys.path.insert(0, os.path.dirname(os.getcwd()))
import alphashape

points_2d = [(0., 0.), (0., 1.), (1., 1.), (1., 0.),
          (0.5, 0.25), (0.5, 0.75), (0.25, 0.5), (0.75, 0.5)]

alpha_shape = alphashape.alphashape(points_2d, 0.)
alpha_shape
fig, ax = plt.subplots()
ax.scatter(*zip(*points_2d))
ax.add_patch(PolygonPatch(alpha_shape, alpha=0.2))
plt.show()

Getting empty alpha shapes

  • Alpha Shape Toolbox version: 1.3.1
  • Python version: 3.9.13, 3.10.6
  • Operating System: Windows 10 Enterprise

Description

I tried ~30 STLs, but I either get empty alphashapes or seemingly random, disconnected triangles.

What I Did

Even the simplest example I could think of - on the command line

python -c "import alphashape as al; points_3d = [ (0., 0., 0.), (0., 0., 1.), (0., 1., 0.), (1., 0., 0.), (1., 1., 0.), (0.,1.,1.)]; a = al.alphashape(points_3d,10); print(a.faces);"

returns

[]

What I Expected

At least a manifold

Acceptance Criteria

Getting the alpha shape

System information

Provenance: conda forge
conda version: 4.14.0
Set-up:

  1. Create, activate new environment
  2. conda install alphashape

conda list

# packages in environment at C:\ProgramData\Miniconda3\envs\test_alphashape_forge:
#
# Name                    Version                   Build  Channel
alphashape                1.3.1              pyh44b312d_0    conda-forge
attrs                     22.1.0             pyh71513ae_1    conda-forge
blosc                     1.21.1               h74325e0_3    conda-forge
boost-cpp                 1.78.0               h9f4b32c_1    conda-forge
branca                    0.5.0              pyhd8ed1ab_0    conda-forge
brotli                    1.0.9                h8ffe710_7    conda-forge
brotli-bin                1.0.9                h8ffe710_7    conda-forge
brotlipy                  0.7.0           py310he2412df_1004    conda-forge
bzip2                     1.0.8                h8ffe710_4    conda-forge
ca-certificates           2022.9.24            h5b45459_0    conda-forge
cairo                     1.16.0            hd694305_1014    conda-forge
certifi                   2022.9.24          pyhd8ed1ab_0    conda-forge
cffi                      1.15.1          py310hcbf9ad4_0    conda-forge
cfitsio                   4.1.0                h5a969a9_0    conda-forge
charset-normalizer        2.1.1              pyhd8ed1ab_0    conda-forge
click                     8.1.3           py310h5588dad_0    conda-forge
click-log                 0.4.0              pyhd8ed1ab_0    conda-forge
click-plugins             1.1.1                      py_0    conda-forge
cligj                     0.7.2              pyhd8ed1ab_1    conda-forge
colorama                  0.4.5              pyhd8ed1ab_0    conda-forge
contourpy                 1.0.5           py310h232114e_0    conda-forge
cryptography              37.0.1          py310h21b164f_0  
curl                      7.85.0               heaf79c2_0    conda-forge
cycler                    0.11.0             pyhd8ed1ab_0    conda-forge
expat                     2.4.9                h1537add_0    conda-forge
fiona                     1.8.21          py310hfed10a5_2    conda-forge
folium                    0.12.1.post1       pyhd8ed1ab_1    conda-forge
font-ttf-dejavu-sans-mono 2.37                 hab24e00_0    conda-forge
font-ttf-inconsolata      3.000                h77eed37_0    conda-forge
font-ttf-source-code-pro  2.038                h77eed37_0    conda-forge
font-ttf-ubuntu           0.83                 hab24e00_0    conda-forge
fontconfig                2.14.0               h720f74d_1    conda-forge
fonts-conda-ecosystem     1                             0    conda-forge
fonts-conda-forge         1                             0    conda-forge
fonttools                 4.37.4          py310h8d17308_0    conda-forge
freetype                  2.12.1               h546665d_0    conda-forge
freexl                    1.0.6                h67ca5e6_1    conda-forge
gdal                      3.5.2           py310h644bc08_3    conda-forge
geopandas                 0.11.1             pyhd8ed1ab_0    conda-forge
geopandas-base            0.11.1             pyha770c72_0    conda-forge
geos                      3.11.0               h39d44d4_0    conda-forge
geotiff                   1.7.1                h714bc5f_3    conda-forge
gettext                   0.19.8.1          h5728263_1009    conda-forge
hdf4                      4.2.15               h0e5069d_4    conda-forge
hdf5                      1.12.2          nompi_h57737ce_100    conda-forge
icu                       70.1                 h0e60522_0    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
intel-openmp              2022.1.0          h57928b3_3787    conda-forge
jinja2                    3.1.2              pyhd8ed1ab_1    conda-forge
joblib                    1.2.0              pyhd8ed1ab_0    conda-forge
jpeg                      9e                   h8ffe710_2    conda-forge
kealib                    1.4.15               hdf81f3a_1    conda-forge
kiwisolver                1.4.4           py310h476a331_0    conda-forge
krb5                      1.19.3               hc8ab02b_0    conda-forge
lcms2                     2.12                 h2a16943_0    conda-forge
lerc                      4.0.0                h63175ca_0    conda-forge
libblas                   3.9.0              16_win64_mkl    conda-forge
libbrotlicommon           1.0.9                h8ffe710_7    conda-forge
libbrotlidec              1.0.9                h8ffe710_7    conda-forge
libbrotlienc              1.0.9                h8ffe710_7    conda-forge
libcblas                  3.9.0              16_win64_mkl    conda-forge
libcurl                   7.85.0               heaf79c2_0    conda-forge
libdeflate                1.14                 hcfcfb64_0    conda-forge
libffi                    3.4.2                h8ffe710_5    conda-forge
libgdal                   3.5.2                hec59f66_3    conda-forge
libglib                   2.74.0               h79619a9_0    conda-forge
libiconv                  1.17                 h8ffe710_0    conda-forge
libkml                    1.3.0             hf2ab4e4_1015    conda-forge
liblapack                 3.9.0              16_win64_mkl    conda-forge
libnetcdf                 4.8.1           nompi_h85765be_104    conda-forge
libpng                    1.6.38               h19919ed_0    conda-forge
libpq                     14.5                 h1ea2d34_0    conda-forge
librttopo                 1.1.0               h2842628_11    conda-forge
libspatialindex           1.9.3                h39d44d4_4    conda-forge
libspatialite             5.0.1               ha17912d_18    conda-forge
libsqlite                 3.39.4               hcfcfb64_0    conda-forge
libssh2                   1.10.0               h9a1e1f7_3    conda-forge
libtiff                   4.4.0                h8e97e67_4    conda-forge
libwebp-base              1.2.4                h8ffe710_0    conda-forge
libxcb                    1.13              hcd874cb_1004    conda-forge
libxml2                   2.9.14               hf5bbc77_4    conda-forge
libzip                    1.9.2                h519de47_1    conda-forge
libzlib                   1.2.12               hcfcfb64_4    conda-forge
lz4-c                     1.9.3                h8ffe710_1    conda-forge
m2w64-gcc-libgfortran     5.3.0                         6    conda-forge
m2w64-gcc-libs            5.3.0                         7    conda-forge
m2w64-gcc-libs-core       5.3.0                         7    conda-forge
m2w64-gmp                 6.1.0                         2    conda-forge
m2w64-libwinpthread-git   5.0.0.4634.697f757               2    conda-forge
mapclassify               2.4.3              pyhd8ed1ab_0    conda-forge
markupsafe                2.1.1           py310he2412df_1    conda-forge
matplotlib-base           3.6.0           py310h51140c5_0    conda-forge
mkl                       2022.1.0           h6a75c08_874    conda-forge
msys2-conda-epoch         20160418                      1    conda-forge
munch                     2.5.0                      py_0    conda-forge
munkres                   1.1.4              pyh9f0ad1d_0    conda-forge
networkx                  2.8.7              pyhd8ed1ab_0    conda-forge
numpy                     1.23.3          py310h4a8f9c9_0    conda-forge
openjpeg                  2.5.0                hc9384bd_1    conda-forge
openssl                   3.0.5                hcfcfb64_2    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pandas                    1.5.0           py310h1c4a608_0    conda-forge
pcre                      8.45                 h0e60522_0    conda-forge
pcre2                     10.37                hdfff0fc_1    conda-forge
pillow                    9.2.0           py310h52929f7_2    conda-forge
pip                       22.2.2             pyhd8ed1ab_0    conda-forge
pixman                    0.40.0               h8ffe710_0    conda-forge
poppler                   22.04.0              hb57f792_3    conda-forge
poppler-data              0.4.11               hd8ed1ab_0    conda-forge
postgresql                14.5                 he353ca9_0    conda-forge
proj                      9.0.1                h1cfcee9_1    conda-forge
pthread-stubs             0.4               hcd874cb_1001    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pyopenssl                 22.0.0             pyhd8ed1ab_1    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pyproj                    3.4.0           py310h6377384_0    conda-forge
pysocks                   1.7.1              pyh0701188_6    conda-forge
python                    3.10.6          hcf16a7b_0_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python_abi                3.10                    2_cp310    conda-forge
pytz                      2022.4             pyhd8ed1ab_0    conda-forge
requests                  2.28.1             pyhd8ed1ab_1    conda-forge
rtree                     1.0.0           py310h1cbd46b_1    conda-forge
scikit-learn              1.1.2           py310h3a564e9_0    conda-forge
scipy                     1.9.1           py310h578b7cb_0    conda-forge
setuptools                65.4.1             pyhd8ed1ab_0    conda-forge
shapely                   1.8.4           py310h523c7d9_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
snappy                    1.1.9                h82413e6_1    conda-forge
sqlite                    3.39.4               hcfcfb64_0    conda-forge
tbb                       2021.6.0             h91493d7_0    conda-forge
threadpoolctl             3.1.0              pyh8a188c0_0    conda-forge
tiledb                    2.11.3               h3132609_0    conda-forge
tk                        8.6.12               h8ffe710_0    conda-forge
trimesh                   3.15.3             pyh1a96a4e_0    conda-forge
tzdata                    2022d                h191b570_0    conda-forge
ucrt                      10.0.20348.0         h57928b3_0    conda-forge
unicodedata2              14.0.0          py310he2412df_1    conda-forge
urllib3                   1.26.11            pyhd8ed1ab_0    conda-forge
vc                        14.2                 hac3ee0b_8    conda-forge
vs2015_runtime            14.29.30139          h890b9b1_8    conda-forge
wheel                     0.37.1             pyhd8ed1ab_0    conda-forge
win_inet_pton             1.1.0           py310h5588dad_4    conda-forge
xerces-c                  3.2.3                h0e60522_5    conda-forge
xorg-libxau               1.0.9                hcd874cb_0    conda-forge
xorg-libxdmcp             1.1.3                hcd874cb_0    conda-forge
xyzservices               2022.9.0           pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h8d14728_0    conda-forge
zlib                      1.2.12               hcfcfb64_4    conda-forge
zstd                      1.5.2                h7755175_4    conda-forge

Segmentation fault using Shapely after installing alphashape

I was using alphashape and Shapely together and it lead to a Segmentation Fault when creating a Polygon in Shapely.
After uninstall alphashape, Click and click-log this fault still occurs.
I had to completely remove pip3 to clear this error.

Not sure if this issue belongs more to alphashape or Shapely.

I am using Ubuntu 18.04 with the newest python3 and pip3 version.

shapes (3,3) and (0,) not aligned: 3 (dim 1) != 0 (dim 0) crash and how to solve this?

  • Alpha Shape Toolbox version: latest
  • Python version:3.10.7
  • Operating System:win11

Description

I have those dots that need to convert to a 3D volume using this code
But I found that there was something wrong with the compiled period after I entered it.

What I Did

points_3d = [
    (57, 11, 18), (51.22318624, 7.595082359,
                   18.96144895), (63.90307229, 0.612714382, 18.92441008),
    (54.04337196, 13.09810222, -36.37036356), (74.99878683, -66.99592395, 22.63615156)
]

alphashape.alphashape(points_3d, lambda ind, r: 1.0 + any(
    np.array(points_3d)[ind][:, 0] == 0.0)).show()

the crash is this

line 22, in <module>
    np.array(points_3d)[ind][:, 0] == 0.0)).show()
  File "C:\Python310\lib\site-packages\trimesh\base.py", line 2644, in show
    return scene.show(**kwargs)
  File "C:\Python310\lib\site-packages\trimesh\scene\scene.py", line 1091, in show
    return SceneViewer(self, **kwargs)
  File "C:\Python310\lib\site-packages\trimesh\viewer\windowed.py", line 103, in __init__
    self._initial_camera_transform = scene.camera_transform.copy()
  File "C:\Python310\lib\site-packages\trimesh\scene\scene.py", line 598, in camera_transform
    return self.graph[self.camera.name][0]
  File "C:\Python310\lib\site-packages\trimesh\scene\scene.py", line 655, in camera
    return self.set_camera()
  File "C:\Python310\lib\site-packages\trimesh\scene\scene.py", line 569, in set_camera
    transform = cameras.look_at(
  File "C:\Python310\lib\site-packages\trimesh\scene\cameras.py", line 329, in look_at
    points_c = rinv.dot(points.T).T
ValueError: shapes (3,3) and (0,) not aligned: 3 (dim 1) != 0 (dim 0)

What I Expected

I want to connect those dots to a 3D volume like those images.
31284722681732d55ad58d39409ed7b
2a48aaf2741b1defec60be5ba49ca0e

Acceptance Criteria

activate Travis CI

There is a .travis.yml here, but no badge in the README (image for https://api.travis-ci.com/bellockk/alphashape.svg?branch=master) and a 404 on the Travis site for this project.

So perhaps you'd still need to sign up your Github account for Travis CI?

(Also, it would probably be great to run the coverage test on the CI itself and upload its report to codecov.io. This should be as simple as adding a second line to scripts running the first two lines of your coverage recipe, and then adding a directive codecov under after_success.)

Include Jupyter Notebook in Examples

  • Alpha Shape Toolbox version: v0.1.7
  • Python version: v3.7.3
  • Operating System: Fedora 29

Description

A binder link exists in the top level README.md file, but there are no jupyter notebooks in the examples folder to view.

What I Did

Clicked on the binder link, and explored the project looking for notebooks.

What I Expected

To find a notebook in the examples folder.

Acceptance Criteria

A jupyter notebook demonstrating toolbox usage and capabilities will be available when using the binder link.

Add Windows Platform to Continuous Integration Testing

  • Alpha Shape Toolbox version: v0.1.7
  • Python version: v3.7.3
  • Operating System: Fedora 29

Description

Continuous integration testing is only occurring on a linux target. Add a Windows build node and configure it to test builds.

What I Did

Submitted a patch.

What I Expected

Tests to be executed on Windows build node.

Acceptance Criteria

Automated continuous integration testing will be executed on a Windows build node.

optimize alpha in 3D

  • Alpha Shape Toolbox version: 1.3.1
  • Python version: 3.9.2
  • Operating System: Debian 11

Description

As far as I can tell, the alphshape optimization feature is only available in 2D. I have implemented that feature in 3D, too. If you like, I could try to contribute it.

Create Application Utilizing the `alphashape` Toolbox

  • Alpha Shape Toolbox version: v0.1.7
  • Python version: v3.7.3
  • Operating System: Fedora 29

Description

A placeholder for a command line application using the alphashape toolbox is in the source code. This needs to be updated to include capability to read in a ESRI shapefile, an alpha parameter, and a target ESRI shapefile location and write out the geometries created by the alphashape tool to the target file.

Acceptance Criteria

Installing the alphashape toolbox will add a command line utility with the capability described in the Description of this issue.

Include GeoPandas Integration

  • Alpha Shape Toolbox version: v0.1.7
  • Python version: v3.7
  • Operating System: Fedora 29

Description

GeoPandas is a useful tool for dealing with GIS data that will have geographic data stored within an associated coordinate reference frame.

Include GeoPandas capability into the alphashape toolbox by allowing the user to supply a geodataframe as an input to the alphashape function. Include examples and a jupyter notebook demonstrating the capability.

What I Did

Called the alphashape function with a geodataframe as the input data.

What I Expected

To get back a geodataframe object containing the geometry of the alphashape.

Acceptance Criteria

Calling the alphashape function with a geodataframe object as input will return a geodataframe object containing the alpha shape geometry.

Include capability to optimize alpha parameter

  • Alpha Shape Toolbox version: v0.1.7
  • Python version: v3
  • Operating System: Fedora 30

Description

A very common use case of the alphashape toolbox is to find the concave hull that best fits a set of points in one polygon. A user will manually repeating the generation of alpha shapes with different parameters until a tight fitting shape is found in one polygon. Automate this process with an optimizealpha function. Also update the alphashape function to determine an alpha parameter if one is not given by the user.

Acceptance Criteria

A new function optimizealpha will be available that will solve for the alpha parameter that results in the tightest fitting alpha shape that returns one polygon. The alphashape function will also be able to be called without an alpha parameter, and this new function will be used to determine one. Tests must be included for this new capability.

Citation for code?

I intend to cite your work in a paper I am writing, in which this code is being used. Could you possibly provide a Zenodo link or some other kind of citation information somewhere in your readme (and here)?

Documentation not clear

The documentation is not clear if the package is only two dimensional or N-dimensional. All examples are also in two-dimensions, not helping again to understand if more than two dimensions are supported. It should be stated at the beginning of the documentation if the package is N-dimensional or only two-dimensional.

optimizealpha does not converge for alphas >= 4

  • Alpha Shape Toolbox version: 1.1
  • Python version: 3.7
  • Operating System: Fedora 32

Description

optimizealpha fails when the optimal alpha is a bit big. In my particular case, upper and lower values are:

lower = 4.5 
upper = np.nextafter(lower, 9)
print((upper - lower) > numpy.finfo(float).eps * 2 )         
True                                                                                                                           

The middle point is identical to lower, so the model never converges below the threshold.

Solutions:

I see two ways of solving the problem:

  • Compute the right eps for the current value range: 2 * np.finfo(float).eps * lower, or more accurately, np.finfo(float).eps * 2 ** math.floor(1 + math.log2(lower)) ,
  • Allow the user to specify their own threshold.

The first case is better suited to the current code, but getting alpha to within machine precision may not always be necessary.

Updates to stable versions

  • Alpha Shape Toolbox version: 1.3.1
  • Python version: 3.11
  • Operating System: Windows 10

Description

Identified some libraries that can be updated to allow the tutorial to function properly

What I Did

Attempted to run the tutorial but found the same issues as motioned in #44

Attempted to match my env to that described in requirements.txt (note that this is different than that described in setup.py) and found that many library versions used are no longer stable and fail on install.

pip install shapely==1.7.0

[21 lines of output] Traceback (most recent call last): File "C:\Users\wisch\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353, in <module> main() File "C:\Users\wisch\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335, in main json_out['return_val'] = hook(**hook_input['kwargs']) File "C:\Users\wisch\AppData\Local\Programs\Python\Python310\lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 118, in get_requires_for_build_wheel return hook(config_settings) File "C:\Users\wisch\AppData\Local\Temp\pip-build-env-2jghjqcx\overlay\Lib\site-packages\setuptools\build_meta.py", line 355, in get_requires_for_build_wheel return self._get_build_requires(config_settings, requirements=['wheel']) File "C:\Users\wisch\AppData\Local\Temp\pip-build-env-2jghjqcx\overlay\Lib\site-packages\setuptools\build_meta.py", line 325, in _get_build_requires self.run_setup() File "C:\Users\wisch\AppData\Local\Temp\pip-build-env-2jghjqcx\overlay\Lib\site-packages\setuptools\build_meta.py", line 507, in run_setup super(_BuildMetaLegacyBackend, self).run_setup(setup_script=setup_script) File "C:\Users\wisch\AppData\Local\Temp\pip-build-env-2jghjqcx\overlay\Lib\site-packages\setuptools\build_meta.py", line 341, in run_setup exec(code, locals()) File "<string>", line 85, in <module> File "C:\Users\wisch\AppData\Local\Temp\pip-install-tt23r6e_\shapely_7768876d24d64883a68e39f25fabf682\shapely\_buildcfg.py", line 205, in <module> lgeos = CDLL("geos_c.dll") File "C:\Users\wisch\AppData\Local\Programs\Python\Python310\lib\ctypes\__init__.py", line 374, in __init__ self._handle = _dlopen(self._name, mode) FileNotFoundError: Could not find module 'geos_c.dll' (or one of its dependencies). Try using the full path with constructor syntax.

pip install scipy==1.5.2

` C:\Users\wisch\AppData\Local\Temp\pip-install-n4htu1uc\numpy_7f356b0642a84939984027a4849e48bc\numpy\distutils\system_info.py:1712: UserWarning:
Lapack (http://www.netlib.org/lapack/) sources not found.
Directories to search for the sources can be specified in the
numpy/distutils/site.cfg file (section [lapack_src]) or by setting
the LAPACK_SRC environment variable.
if getattr(self, 'calc_info{}'.format(lapack))():
NOT AVAILABLE

    C:\Users\wisch\AppData\Local\Temp\pip-build-env-2r1mfm2k\overlay\Lib\site-packages\setuptools\_distutils\dist.py:265: UserWarning: Unknown distribution option: 'define_macros'
      warnings.warn(msg)
    running dist_info
    running build_src
    build_src
    building py_modules sources
    creating build
    creating build\src.win-amd64-3.1
    creating build\src.win-amd64-3.1\numpy
    creating build\src.win-amd64-3.1\numpy\distutils
    building library "npymath" sources
    No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils
    error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
    [end of output]

    note: This error originates from a subprocess, and is likely not a problem with pip.
  error: metadata-generation-failed`

What I Expected

Successfully installed shapely-1.8.0
Successfully installed scipy-1.5.2

Acceptance Criteria

successful run of the following

python -m venv c:\path\to\myenv c:\path\to\myenv\Scripts\activate.ps1 pip install -r requirements.txt
returns:
Successfully installed <libraries listed in requirements.txt>

100x slower on Ubuntu

  • Alpha Shape Toolbox version: alphashape==1.0.2
  • Python version: 3.7
  • Operating System: Ubuntu 18.04

Also Numpy version: numpy==1.16.3

Description

Alphashape.alphashape is taking a few seconds to compute for an alpha hull of 0.1 and thousands of points.
However, it seems around a hundred times faster on Windows.

I am working on a reproduction with clearer measurements, but in the meantime, do you have any tip what I could do to investigate the issue or what info I could provide to help?

Is there a specific computation that could provoke some slowness, eg some intensive computation that rely specifically on Numpy or any other 3rd party lib to be performant, or anything like that?

What I Expected

Same perfs on Windows and Linux

optimizealpha() not working as expected

  • Alpha Shape Toolbox version: 1.3.1
  • Python version: 3.10.8
  • Operating System: macOS

Description

From a set of points I am trying to find the best alpha shape so am not providing the alphashape function with an alpha value so that it can find the best one for my points ie. alphashape.alphashape(points). However, this generated an error from optimizealpha() when there should not have been one as this was a working example provided in the docs. I think there may be a bug in the code of the actual package so it needs to be updated given not even the provided example works.

What I Did

points_2d = [(0., 0.), (0., 1.), (1., 1.), (1., 0.),
          (0.5, 0.25), (0.5, 0.75), (0.25, 0.5), (0.75, 0.5)]
alpha_shape = alphashape.alphashape(points_2d)
fig, ax = plt.subplots()
ax.scatter(*zip(*points))
ax.add_patch(PolygonPatch(alpha_shape, alpha=.2))
plt.show()
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[86], line 3
      1 points_2d = [(0., 0.), (0., 1.), (1., 1.), (1., 0.),
      2           (0.5, 0.25), (0.5, 0.75), (0.25, 0.5), (0.75, 0.5)]
----> 3 alpha_shape = alphashape.alphashape(points_2d)
      4 fig, ax = plt.subplots()
      5 ax.scatter(*zip(*points))

File ~/Documents/ALA/galah-env/lib/python3.10/site-packages/alphashape/alphashape.py:131, in alphashape(points, alpha)
    129     except ImportError:
    130         from .optimizealpha import optimizealpha
--> 131     alpha = optimizealpha(points)
    133 # Convert the points to a numpy array
    134 if USE_GP and isinstance(points, geopandas.geoseries.GeoSeries):

File ~/Documents/ALA/galah-env/lib/python3.10/site-packages/alphashape/optimizealpha.py:100, in optimizealpha(points, max_iterations, lower, upper, silent)
     97 test_alpha = (upper + lower) * .5
     99 # Update the bounds to include the solution space
--> 100 if _testalpha(points, test_alpha):
    101     lower = test_alpha
    102 else:

File ~/Documents/ALA/galah-env/lib/python3.10/site-packages/alphashape/optimizealpha.py:41, in _testalpha(points, alpha)
     39     if not isinstance(points, MultiPoint):
     40         points = MultiPoint(list(points))
---> 41     return all([polygon.intersects(point) for point in points])
     42 elif isinstance(polygon, trimesh.base.Trimesh):
     43     return len(polygon.faces) > 0 and all(
     44         trimesh.proximity.signed_distance(polygon, list(points)) >= 0)

TypeError: 'MultiPoint' object is not iterable

Save created concave hull as mesh

Dear community,

I would like to know how to save the created / computed concave hull with alpha shape as mesh file (e.g. OBJ format)?

I would appreciate any help.

Best,

Add OSX Platform to Continuous Integration Testing

  • Alpha Shape Toolbox version: v0.1.7
  • Python version: v3.7.3
  • Operating System: Fedora 29

Description

Continuous integration testing is only occurring on a linux target. Add an OSX build node and configure it to test builds.

What I Did

Submitted a patch.

What I Expected

Tests to be executed on OSX build node.

Acceptance Criteria

Automated continuous integration testing will be executed on a OSX build node.

Cannot reproduce the example given in the documentation.

  • Alpha Shape Toolbox version: alphashape version: 1.3.1
  • matplotlib version: 3.5.2
  • Python version: 3.9.7
  • Operating System: Windows 11

Description

If I run the code given in the documentation:

points_2d = [(0., 0.), (0., 1.), (1., 1.), (1., 0.),
          (0.5, 0.25), (0.5, 0.75), (0.25, 0.5), (0.75, 0.5)]

fig, ax = plt.subplots()
ax.scatter(*zip(*points_2d))
plt.show()


alpha_shape = alphashape.alphashape(points_2d, 0.)
alpha_shape

fig, ax = plt.subplots()
ax.scatter(*zip(*points_2d))
ax.add_patch(PolygonPatch(alpha_shape, alpha=0.5))
plt.show()

I get the following error:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
~\AppData\Local\Temp/ipykernel_19312/2363699982.py in <module>
     12 fig, ax = plt.subplots()
     13 ax.scatter(*zip(*points_2d))
---> 14 ax.add_patch(PolygonPatch(alpha_shape, alpha=0.5))
     15 plt.show()

~\AppData\Roaming\Python\Python39\site-packages\descartes\patch.py in PolygonPatch(polygon, **kwargs)
     85 
     86     """
---> 87     return PathPatch(PolygonPath(polygon), **kwargs)

~\AppData\Roaming\Python\Python39\site-packages\descartes\patch.py in PolygonPath(polygon)
     60                 "A polygon or multi-polygon representation is required")
     61 
---> 62     vertices = concatenate([
     63         concatenate([asarray(t.exterior)[:, :2]] +
     64                     [asarray(r)[:, :2] for r in t.interiors])

~\AppData\Roaming\Python\Python39\site-packages\descartes\patch.py in <listcomp>(.0)
     61 
     62     vertices = concatenate([
---> 63         concatenate([asarray(t.exterior)[:, :2]] +
     64                     [asarray(r)[:, :2] for r in t.interiors])
     65         for t in polygon])

IndexError: too many indices for array: array is 0-dimensional, but 2 were indexed

Do you know why I am getting this error?

Missing dependency check line 134 in alphashape.py

Please check line 134 in alphashape.py -> add a check for the geopandas import to avoid a non-defined variable name error (in case goepandas is not imported)
if (USE_GP and isinstance(points, geopandas.geoseries.GeoSeries)):
...

Real Warnings instead of logger warnings

  • Alpha Shape Toolbox version: 1.3.1
  • Python version: 3.8.10
  • Operating System: Linux 4.4.162-94.72-default

Description

I believe there is a strong use case for the warnings output by logger to be instead created by warnings. In this case, one can fetch cases where the algorithm would not converge and, for example, try again with known lower / upper parameters. This is helpful, for example, when one is working with a lot of different geometries for which one would like to get the concave hull.

The same goes for the warning "'Singular matrix. Likely caused by all points lying in an N-1 space." If this warning can be fetched, one can possibly stop the execution of the optimizealpha algorithm right away and set, e.g., alpha=0 directly.

I benefitted from changing these details in the code, so I am posting this as a suggestion. Can also do it myself.

Update features in README.md

  • Alpha Shape Toolbox version: v0.1.7
  • Python version: v3.7.3
  • Operating System: Fedora 29

Description

The features list in the README is empty, there should be an informative introduction to the project and its capabilities.

What I Did

Viewed the project on https://github.com/bellockk/alphashape

What I Expected

To see an infomative introduction to the product and its capabilities.

Acceptance Criteria

Viewing the top level README.md file will show plots and a description of the capabilities of this toolbox.

Want some methods to extract boundaries from alpha shape

  • Alpha Shape Toolbox version: latest
  • Python version: 3.7
  • Operating System: windows

Description

Hi, thanks for your contribution. I would like to ask for some methods to extract point cloud surface boundaries by using this toolbox. Do you have some suggestions or demonstrations on it?
Thanks


### What I Expected

### Acceptance Criteria

OSError : [WinError 126] The specified module could not be found

  • Alpha Shape Toolbox version: all versions
  • Python version: 3.7
  • Operating System: windows pro

Description

After installing alphashape I get this error when I try to import alphashape:

Traceback (most recent call last):
File "computer_vision/segmentation/concave_hull_segmentation.py", line 7, in
from alphashape import alphashape
File "C:\Users\nlb\Anaconda3\envs\ai_platform\lib\site-packages\alphashape_init_.py", line 6, in
from .alphashape import alphashape
File "C:\Users\nlb\Anaconda3\envs\ai_platform\lib\site-packages\alphashape\alphashape.py", line 8, in
from shapely.ops import cascaded_union, polygonize
File "C:\Users\nlb\Anaconda3\envs\ai_platform\lib\site-packages\shapely\ops.py", line 13, in
from shapely.prepared import prep
File "C:\Users\nlb\Anaconda3\envs\ai_platform\lib\site-packages\shapely\prepared.py", line 5, in
from shapely.geos import lgeos
File "C:\Users\nlb\Anaconda3\envs\ai_platform\lib\site-packages\shapely\geos.py", line 154, in
lgeos = CDLL(os.path.join(sys.prefix, 'Library', 'bin', 'geos_c.dll'))
File "C:\Users\nlb\Anaconda3\envs\ai_platform\lib\ctypes_init
.py", line 364, in init
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module could not be found

What I Did

from alphashape import alphashape, optimizealpha
points = [(0., 0.), (0., 1.), (1., 1.), (1., 0.), (0.5, 0.25), (0.5, 0.75), (0.25, 0.5), (0.75, 0.5)]
alpha = 0.95 * alphashape.optimizealpha(points)
hull = alphashape.alphashape(points, alpha)

quesiton: need more clarification on using a varying Alpha Parameter

Environment

  • Alpha Shape Toolbox version:1.3.1
  • Python version:3.9.12
  • Operating System: windows 10 19044.1826

Description & What I Did

I tried to understand how to set a varying Alpha parameter from this link but with no vail.

I have some problems regarding this line of code:
lambda ind, r: 1.0 + any(np.array(points_2d)[ind][:,0] == 0.0)

  • Is ind the iterator that loops through the points array?
  • From the source file, it seems that r is circumradius of the simplex. Is that correct?
  • What does [:,0] mean?

Also, more examples on setting varying alpha parameter would be highly appreciated, e.g. based on point density, or by passing in an alpha parameter list?

alphashape.contains misses edge points

  • Alpha Shape Toolbox version: 1.2.1
  • Python version:3.9.x
  • Operating System:OSx

Description

When creating an alphashpe with a set of points running alphashape.alphashape.contains() on all of the points the edge and corner points come up as false. the points are floating point numbers and this could be a rounding issue of some sort.

What I Did

Create random floating point coordinates and generate an alphashape using optimizealpha. Then run the alphashap.alphashape.contains() method on all of the points. All of the border points come back false. 

Use the script from https://stackoverflow.com/questions/61757304/how-to-determine-if-a-point-lies-inside-a-concave-hull-alpha-shape but also run the original points through the if statement and see what color they end up being.

What I Expected

Border points used to create an alphashape should be true if passed into the contain method for that alphashape object.

Acceptance Criteria

Border points used to create an alphashape will be true if passed into the contain method for that alphashape object.

IndexError: too many indices for array: array is 0-dimensional, but 2 were indexed

  • Alpha Shape Toolbox version:
  • Python version:
  • Operating System:

Description

Describe what you were trying to get done.
Tell us what happened, what went wrong, and what you expected to happen.

What I Did

Paste the command(s) you ran and the output.
If there was a crash, please include the traceback here.

What I Expected

Acceptance Criteria

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.