Re: Shapely Polygon creating empty polygon
Found it! Apparently, it’s an import order issue. This works: >>> from shapely.geometry import Polygon >>> from osgeo import osr >>> bounds = [-164.29635821669632, 54.64251856269729, -163.7631779798799, >>> 54.845450778742546] >>> print(Polygon.from_bounds(*bounds)) POLYGON ((-164.2963582166963 54.64251856269729, -164.2963582166963 54.84545077874255, -163.7631779798799 54.84545077874255, -163.7631779798799 54.64251856269729, -164.2963582166963 54.64251856269729)) But this doesn’t: >>> from osgeo import osr >>> from shapely.geometry import Polygon >>> bounds = [-164.29635821669632, 54.64251856269729, -163.7631779798799, >>> 54.845450778742546] >>> print(Polygon.from_bounds(*bounds)) POLYGON EMPTY …So apparently I have to make sure to import shapely *before* I import anything from osgeo. Why? I have no idea... --- Israel Brewster Software Engineer Alaska Volcano Observatory Geophysical Institute - UAF 2156 Koyukuk Drive Fairbanks AK 99775-7320 Work: 907-474-5172 cell: 907-328-9145 > On Jan 4, 2022, at 1:57 PM, Israel Brewster wrote: > > I’m running into an issue with shapely that is baffling me. Perhaps someone > here can help out? > > When running shapely directly from a python 3.8 interpreter, it works as > expected: > > >>> import shapely > >>> shapely.__version__ > '1.8.0' > >>> from shapely.geometry import Polygon > >>> bounds = [-164.29635821669632, 54.64251856269729, -163.7631779798799, > >>> 54.845450778742546] > >>> print(Polygon.from_bounds(*bounds)) > POLYGON ((-164.2963582166963 54.64251856269729, -164.2963582166963 > 54.84545077874255, -163.7631779798799 54.84545077874255, -163.7631779798799 > 54.64251856269729, -164.2963582166963 54.64251856269729)) > > However, if I put this exact same code into my Flask app (currently running > under the Flask development environment) as part of handling a request, I get > an empty polygon: > > >>>import shapely > >>>print(shapely.__version__) > >>>from shapely.geometry import Polygon > >>>print(Polygon.from_bounds(*bounds)) > > Output: > > 1.8.0 > POLYGON EMPTY > > In fact, *any* attempt to create a polygon gives the same result: > >>> test = Polygon(((1, 1), (2, 1), (2, 2))) > >>> print(test) > POLYGON EMPTY > > What am I missing here? Why doesn’t it work as part of a Flask request call? > --- > Israel Brewster > Software Engineer > Alaska Volcano Observatory > Geophysical Institute - UAF > 2156 Koyukuk Drive > Fairbanks AK 99775-7320 > Work: 907-474-5172 > cell: 907-328-9145 > -- https://mail.python.org/mailman/listinfo/python-list
Re: Shapely Polygon creating empty polygon
On 2022-01-04 22:57, Israel Brewster wrote: I’m running into an issue with shapely that is baffling me. Perhaps someone here can help out? When running shapely directly from a python 3.8 interpreter, it works as expected: import shapely shapely.__version__ '1.8.0' from shapely.geometry import Polygon bounds = [-164.29635821669632, 54.64251856269729, -163.7631779798799, 54.845450778742546] print(Polygon.from_bounds(*bounds)) POLYGON ((-164.2963582166963 54.64251856269729, -164.2963582166963 54.84545077874255, -163.7631779798799 54.84545077874255, -163.7631779798799 54.64251856269729, -164.2963582166963 54.64251856269729)) However, if I put this exact same code into my Flask app (currently running under the Flask development environment) as part of handling a request, I get an empty polygon: import shapely print(shapely.__version__) from shapely.geometry import Polygon print(Polygon.from_bounds(*bounds)) In that piece of code you didn't set 'bounds'. It might be worth setting it or at least printing it out to double-check. Output: 1.8.0 POLYGON EMPTY In fact, *any* attempt to create a polygon gives the same result: test = Polygon(((1, 1), (2, 1), (2, 2))) print(test) POLYGON EMPTY Did you try that piece of code both in Flask and from the command line, again to double-check. What am I missing here? Why doesn’t it work as part of a Flask request call? -- https://mail.python.org/mailman/listinfo/python-list
Shapely Polygon creating empty polygon
I’m running into an issue with shapely that is baffling me. Perhaps someone here can help out? When running shapely directly from a python 3.8 interpreter, it works as expected: >>> import shapely >>> shapely.__version__ '1.8.0' >>> from shapely.geometry import Polygon >>> bounds = [-164.29635821669632, 54.64251856269729, -163.7631779798799, >>> 54.845450778742546] >>> print(Polygon.from_bounds(*bounds)) POLYGON ((-164.2963582166963 54.64251856269729, -164.2963582166963 54.84545077874255, -163.7631779798799 54.84545077874255, -163.7631779798799 54.64251856269729, -164.2963582166963 54.64251856269729)) However, if I put this exact same code into my Flask app (currently running under the Flask development environment) as part of handling a request, I get an empty polygon: >>>import shapely >>>print(shapely.__version__) >>>from shapely.geometry import Polygon >>>print(Polygon.from_bounds(*bounds)) Output: 1.8.0 POLYGON EMPTY In fact, *any* attempt to create a polygon gives the same result: >>> test = Polygon(((1, 1), (2, 1), (2, 2))) >>> print(test) POLYGON EMPTY What am I missing here? Why doesn’t it work as part of a Flask request call? --- Israel Brewster Software Engineer Alaska Volcano Observatory Geophysical Institute - UAF 2156 Koyukuk Drive Fairbanks AK 99775-7320 Work: 907-474-5172 cell: 907-328-9145 -- https://mail.python.org/mailman/listinfo/python-list