Creating complex polygon with pyshp? The 2019 Stack Overflow Developer Survey Results Are InDrawing complex polygons with PyQGISAppending point values with pyshp?How to add attributes to shapefile with Python and pyshp?Appending using PyShpCreating Polyline from GML using PyShp?Pyshp Editor errorpyshp problem with naturalearthdata-shapefileUsing PyShp to create polygon shapefiles?Lining attributes up with features when creating shapefile using PyShp?Creating and reading z values (coordinates) with pyshp?Storing a geographic minimum spanning tree with PyShp
How to translate "being like"?
Can withdrawing asylum be illegal?
The phrase "to the numbers born"?
How to obtain a position of last non-zero element
How to type a long/em dash `—`
Geography at the pixel level
What could be the right powersource for 15 seconds lifespan disposable giant chainsaw?
Loose spokes after only a few rides
Is Cinnamon a desktop environment or a window manager? (Or both?)
Falsification in Math vs Science
Does HR tell a hiring manager about salary negotiations?
Worn-tile Scrabble
Is an up-to-date browser secure on an out-of-date OS?
Is it ethical to upload a automatically generated paper to a non peer-reviewed site as part of a larger research?
How did passengers keep warm on sail ships?
Can there be female White Walkers?
How can I add encounters in the Lost Mine of Phandelver campaign without giving PCs too much XP?
If a sorcerer casts the Banishment spell on a PC while in Avernus, does the PC return to their home plane?
"as much details as you can remember"
Getting crown tickets for Statue of Liberty
Why are there uneven bright areas in this photo of black hole?
Kerning for subscripts of sigma?
Star Trek - X-shaped Item on Regula/Orbital Office Starbases
How do you keep chess fun when your opponent constantly beats you?
Creating complex polygon with pyshp?
The 2019 Stack Overflow Developer Survey Results Are InDrawing complex polygons with PyQGISAppending point values with pyshp?How to add attributes to shapefile with Python and pyshp?Appending using PyShpCreating Polyline from GML using PyShp?Pyshp Editor errorpyshp problem with naturalearthdata-shapefileUsing PyShp to create polygon shapefiles?Lining attributes up with features when creating shapefile using PyShp?Creating and reading z values (coordinates) with pyshp?Storing a geographic minimum spanning tree with PyShp
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
using the pyshp library (https://code.google.com/p/pyshp/) I am trying to create a "complex" polgon with one hole inside the main-poly plus one island-poly. It should look like this:
I used the following code from the documentation, only changing the number of points and using anticlockwise rotation for the hole:
import shapefile
w = shapefile.Writer(shapefile.POLYGON)
w.poly(parts=[[[0,50],[50,50],[50,0],[0,0],[0,50],[10,40],[10,10],[30,10],[30,40],[10,40],[70,20],[100,20],[100,0],[70,0],[70,20]]])
w.field('FIRST_FLD','C','40')
w.field('SECOND_FLD','C','40')
w.record('Poly','PolyTest')
w.save('TESTPOLY')
I get this:
Obviously I am making a stupid python-rookie-error. Any hints are very appreciated. Thanks.
python pyshp
add a comment |
using the pyshp library (https://code.google.com/p/pyshp/) I am trying to create a "complex" polgon with one hole inside the main-poly plus one island-poly. It should look like this:
I used the following code from the documentation, only changing the number of points and using anticlockwise rotation for the hole:
import shapefile
w = shapefile.Writer(shapefile.POLYGON)
w.poly(parts=[[[0,50],[50,50],[50,0],[0,0],[0,50],[10,40],[10,10],[30,10],[30,40],[10,40],[70,20],[100,20],[100,0],[70,0],[70,20]]])
w.field('FIRST_FLD','C','40')
w.field('SECOND_FLD','C','40')
w.record('Poly','PolyTest')
w.save('TESTPOLY')
I get this:
Obviously I am making a stupid python-rookie-error. Any hints are very appreciated. Thanks.
python pyshp
add a comment |
using the pyshp library (https://code.google.com/p/pyshp/) I am trying to create a "complex" polgon with one hole inside the main-poly plus one island-poly. It should look like this:
I used the following code from the documentation, only changing the number of points and using anticlockwise rotation for the hole:
import shapefile
w = shapefile.Writer(shapefile.POLYGON)
w.poly(parts=[[[0,50],[50,50],[50,0],[0,0],[0,50],[10,40],[10,10],[30,10],[30,40],[10,40],[70,20],[100,20],[100,0],[70,0],[70,20]]])
w.field('FIRST_FLD','C','40')
w.field('SECOND_FLD','C','40')
w.record('Poly','PolyTest')
w.save('TESTPOLY')
I get this:
Obviously I am making a stupid python-rookie-error. Any hints are very appreciated. Thanks.
python pyshp
using the pyshp library (https://code.google.com/p/pyshp/) I am trying to create a "complex" polgon with one hole inside the main-poly plus one island-poly. It should look like this:
I used the following code from the documentation, only changing the number of points and using anticlockwise rotation for the hole:
import shapefile
w = shapefile.Writer(shapefile.POLYGON)
w.poly(parts=[[[0,50],[50,50],[50,0],[0,0],[0,50],[10,40],[10,10],[30,10],[30,40],[10,40],[70,20],[100,20],[100,0],[70,0],[70,20]]])
w.field('FIRST_FLD','C','40')
w.field('SECOND_FLD','C','40')
w.record('Poly','PolyTest')
w.save('TESTPOLY')
I get this:
Obviously I am making a stupid python-rookie-error. Any hints are very appreciated. Thanks.
python pyshp
python pyshp
edited Mar 27 '17 at 7:07
PolyGeo♦
53.9k1782246
53.9k1782246
asked May 21 '14 at 18:05
KurtKurt
4,93412339
4,93412339
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
Well you made a rookie mistake but definitely not a stupid one. Each piece of your complex polygon, including the hole, is called a "part" in the shapefile spec. Parts are how they tie multiple distinct geometries to a single dbf record.
In pyshp, parts are a list of lists passed to the poly method. The example you followed only has one list of points within the parts. But your shapefile has 3 distinct polygons. So each one of your 3 shapes needs to be in a sub-list like this:
w.poly(parts=[[[0,50],[50,50],[50,0],[0,0],[0,50]],[[10,40],[10,10],[30,10],[30,40],[10,40]],[[70,20],[100,20],[100,0],[70,0],[70,20]]])
add a comment |
# [[[Clockwise Part (Single)]], [[Counter Clockwise Parts (Multiple)]]]
parts_with_holes = [[[0, 50], [50, 50], [50, 0], [0, 0], [0, 50]], [[10, 40], [10, 10], [30, 10], [30, 40], [10, 40]]]
# [[Clockwise Part (Single)]]
parts_no_holes = [[10, 10], [10, 40], [30, 40], [30, 10], [10, 10]]
sf_out.field('FIRST_FLD', 'C', '40')
sf_out.field('SECOND_FLD', 'C', '40')
sf_out.poly(parts_with_holes)
sf_out.record('Poly', 'PolyTest')
sf_out.poly([parts_no_holes])
sf_out.record('Poly', 'PolyTest')
sf_out.close()
New contributor
Welcome to GIS.SE. Please consider adding explanation of your code in the answer.
– tinlyx
Apr 6 at 5:07
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "79"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f97623%2fcreating-complex-polygon-with-pyshp%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Well you made a rookie mistake but definitely not a stupid one. Each piece of your complex polygon, including the hole, is called a "part" in the shapefile spec. Parts are how they tie multiple distinct geometries to a single dbf record.
In pyshp, parts are a list of lists passed to the poly method. The example you followed only has one list of points within the parts. But your shapefile has 3 distinct polygons. So each one of your 3 shapes needs to be in a sub-list like this:
w.poly(parts=[[[0,50],[50,50],[50,0],[0,0],[0,50]],[[10,40],[10,10],[30,10],[30,40],[10,40]],[[70,20],[100,20],[100,0],[70,0],[70,20]]])
add a comment |
Well you made a rookie mistake but definitely not a stupid one. Each piece of your complex polygon, including the hole, is called a "part" in the shapefile spec. Parts are how they tie multiple distinct geometries to a single dbf record.
In pyshp, parts are a list of lists passed to the poly method. The example you followed only has one list of points within the parts. But your shapefile has 3 distinct polygons. So each one of your 3 shapes needs to be in a sub-list like this:
w.poly(parts=[[[0,50],[50,50],[50,0],[0,0],[0,50]],[[10,40],[10,10],[30,10],[30,40],[10,40]],[[70,20],[100,20],[100,0],[70,0],[70,20]]])
add a comment |
Well you made a rookie mistake but definitely not a stupid one. Each piece of your complex polygon, including the hole, is called a "part" in the shapefile spec. Parts are how they tie multiple distinct geometries to a single dbf record.
In pyshp, parts are a list of lists passed to the poly method. The example you followed only has one list of points within the parts. But your shapefile has 3 distinct polygons. So each one of your 3 shapes needs to be in a sub-list like this:
w.poly(parts=[[[0,50],[50,50],[50,0],[0,0],[0,50]],[[10,40],[10,10],[30,10],[30,40],[10,40]],[[70,20],[100,20],[100,0],[70,0],[70,20]]])
Well you made a rookie mistake but definitely not a stupid one. Each piece of your complex polygon, including the hole, is called a "part" in the shapefile spec. Parts are how they tie multiple distinct geometries to a single dbf record.
In pyshp, parts are a list of lists passed to the poly method. The example you followed only has one list of points within the parts. But your shapefile has 3 distinct polygons. So each one of your 3 shapes needs to be in a sub-list like this:
w.poly(parts=[[[0,50],[50,50],[50,0],[0,0],[0,50]],[[10,40],[10,10],[30,10],[30,40],[10,40]],[[70,20],[100,20],[100,0],[70,0],[70,20]]])
answered May 22 '14 at 16:54
GeospatialPython.comGeospatialPython.com
1,265610
1,265610
add a comment |
add a comment |
# [[[Clockwise Part (Single)]], [[Counter Clockwise Parts (Multiple)]]]
parts_with_holes = [[[0, 50], [50, 50], [50, 0], [0, 0], [0, 50]], [[10, 40], [10, 10], [30, 10], [30, 40], [10, 40]]]
# [[Clockwise Part (Single)]]
parts_no_holes = [[10, 10], [10, 40], [30, 40], [30, 10], [10, 10]]
sf_out.field('FIRST_FLD', 'C', '40')
sf_out.field('SECOND_FLD', 'C', '40')
sf_out.poly(parts_with_holes)
sf_out.record('Poly', 'PolyTest')
sf_out.poly([parts_no_holes])
sf_out.record('Poly', 'PolyTest')
sf_out.close()
New contributor
Welcome to GIS.SE. Please consider adding explanation of your code in the answer.
– tinlyx
Apr 6 at 5:07
add a comment |
# [[[Clockwise Part (Single)]], [[Counter Clockwise Parts (Multiple)]]]
parts_with_holes = [[[0, 50], [50, 50], [50, 0], [0, 0], [0, 50]], [[10, 40], [10, 10], [30, 10], [30, 40], [10, 40]]]
# [[Clockwise Part (Single)]]
parts_no_holes = [[10, 10], [10, 40], [30, 40], [30, 10], [10, 10]]
sf_out.field('FIRST_FLD', 'C', '40')
sf_out.field('SECOND_FLD', 'C', '40')
sf_out.poly(parts_with_holes)
sf_out.record('Poly', 'PolyTest')
sf_out.poly([parts_no_holes])
sf_out.record('Poly', 'PolyTest')
sf_out.close()
New contributor
Welcome to GIS.SE. Please consider adding explanation of your code in the answer.
– tinlyx
Apr 6 at 5:07
add a comment |
# [[[Clockwise Part (Single)]], [[Counter Clockwise Parts (Multiple)]]]
parts_with_holes = [[[0, 50], [50, 50], [50, 0], [0, 0], [0, 50]], [[10, 40], [10, 10], [30, 10], [30, 40], [10, 40]]]
# [[Clockwise Part (Single)]]
parts_no_holes = [[10, 10], [10, 40], [30, 40], [30, 10], [10, 10]]
sf_out.field('FIRST_FLD', 'C', '40')
sf_out.field('SECOND_FLD', 'C', '40')
sf_out.poly(parts_with_holes)
sf_out.record('Poly', 'PolyTest')
sf_out.poly([parts_no_holes])
sf_out.record('Poly', 'PolyTest')
sf_out.close()
New contributor
# [[[Clockwise Part (Single)]], [[Counter Clockwise Parts (Multiple)]]]
parts_with_holes = [[[0, 50], [50, 50], [50, 0], [0, 0], [0, 50]], [[10, 40], [10, 10], [30, 10], [30, 40], [10, 40]]]
# [[Clockwise Part (Single)]]
parts_no_holes = [[10, 10], [10, 40], [30, 40], [30, 10], [10, 10]]
sf_out.field('FIRST_FLD', 'C', '40')
sf_out.field('SECOND_FLD', 'C', '40')
sf_out.poly(parts_with_holes)
sf_out.record('Poly', 'PolyTest')
sf_out.poly([parts_no_holes])
sf_out.record('Poly', 'PolyTest')
sf_out.close()
New contributor
edited Apr 6 at 5:06
tinlyx
5,38163374
5,38163374
New contributor
answered Apr 6 at 3:46
justaguyjustaguy
1
1
New contributor
New contributor
Welcome to GIS.SE. Please consider adding explanation of your code in the answer.
– tinlyx
Apr 6 at 5:07
add a comment |
Welcome to GIS.SE. Please consider adding explanation of your code in the answer.
– tinlyx
Apr 6 at 5:07
Welcome to GIS.SE. Please consider adding explanation of your code in the answer.
– tinlyx
Apr 6 at 5:07
Welcome to GIS.SE. Please consider adding explanation of your code in the answer.
– tinlyx
Apr 6 at 5:07
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f97623%2fcreating-complex-polygon-with-pyshp%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown