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;








2















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:



enter image description here



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:
enter image description here



Obviously I am making a stupid python-rookie-error. Any hints are very appreciated. Thanks.










share|improve this question






























    2















    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:



    enter image description here



    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:
    enter image description here



    Obviously I am making a stupid python-rookie-error. Any hints are very appreciated. Thanks.










    share|improve this question


























      2












      2








      2


      1






      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:



      enter image description here



      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:
      enter image description here



      Obviously I am making a stupid python-rookie-error. Any hints are very appreciated. Thanks.










      share|improve this question
















      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:



      enter image description here



      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:
      enter image description here



      Obviously I am making a stupid python-rookie-error. Any hints are very appreciated. Thanks.







      python pyshp






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Mar 27 '17 at 7:07









      PolyGeo

      53.9k1782246




      53.9k1782246










      asked May 21 '14 at 18:05









      KurtKurt

      4,93412339




      4,93412339




















          2 Answers
          2






          active

          oldest

          votes


















          5














          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]]])


          enter image description here






          share|improve this answer






























            0














            # [[[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()





            share|improve this answer










            New contributor




            justaguy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.




















            • Welcome to GIS.SE. Please consider adding explanation of your code in the answer.

              – tinlyx
              Apr 6 at 5:07











            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
            );



            );













            draft saved

            draft discarded


















            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









            5














            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]]])


            enter image description here






            share|improve this answer



























              5














              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]]])


              enter image description here






              share|improve this answer

























                5












                5








                5







                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]]])


                enter image description here






                share|improve this answer













                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]]])


                enter image description here







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered May 22 '14 at 16:54









                GeospatialPython.comGeospatialPython.com

                1,265610




                1,265610























                    0














                    # [[[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()





                    share|improve this answer










                    New contributor




                    justaguy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.




















                    • Welcome to GIS.SE. Please consider adding explanation of your code in the answer.

                      – tinlyx
                      Apr 6 at 5:07















                    0














                    # [[[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()





                    share|improve this answer










                    New contributor




                    justaguy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.




















                    • Welcome to GIS.SE. Please consider adding explanation of your code in the answer.

                      – tinlyx
                      Apr 6 at 5:07













                    0












                    0








                    0







                    # [[[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()





                    share|improve this answer










                    New contributor




                    justaguy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.










                    # [[[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()






                    share|improve this answer










                    New contributor




                    justaguy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.









                    share|improve this answer



                    share|improve this answer








                    edited Apr 6 at 5:06









                    tinlyx

                    5,38163374




                    5,38163374






                    New contributor




                    justaguy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.









                    answered Apr 6 at 3:46









                    justaguyjustaguy

                    1




                    1




                    New contributor




                    justaguy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.





                    New contributor





                    justaguy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.






                    justaguy is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                    Check out our Code of Conduct.












                    • 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





                    Welcome to GIS.SE. Please consider adding explanation of your code in the answer.

                    – tinlyx
                    Apr 6 at 5:07

















                    draft saved

                    draft discarded
















































                    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.




                    draft saved


                    draft discarded














                    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





















































                    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







                    Popular posts from this blog

                    រឿង រ៉ូមេអូ និង ហ្ស៊ុយលីយេ សង្ខេបរឿង តួអង្គ បញ្ជីណែនាំ

                    Crop image to path created in TikZ? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)Crop an inserted image?TikZ pictures does not appear in posterImage behind and beyond crop marks?Tikz picture as large as possible on A4 PageTransparency vs image compression dilemmaHow to crop background from image automatically?Image does not cropTikzexternal capturing crop marks when externalizing pgfplots?How to include image path that contains a dollar signCrop image with left size given

                    Romeo and Juliet ContentsCharactersSynopsisSourcesDate and textThemes and motifsCriticism and interpretationLegacyScene by sceneSee alsoNotes and referencesSourcesExternal linksNavigation menu"Consumer Price Index (estimate) 1800–"10.2307/28710160037-3222287101610.1093/res/II.5.31910.2307/45967845967810.2307/2869925286992510.1525/jams.1982.35.3.03a00050"Dada Masilo: South African dancer who breaks the rules"10.1093/res/os-XV.57.1610.2307/28680942868094"Sweet Sorrow: Mann-Korman's Romeo and Juliet Closes Sept. 5 at MN's Ordway"the original10.2307/45957745957710.1017/CCOL0521570476.009"Ram Leela box office collections hit massive Rs 100 crore, pulverises prediction"Archived"Broadway Revival of Romeo and Juliet, Starring Orlando Bloom and Condola Rashad, Will Close Dec. 8"Archived10.1075/jhp.7.1.04hon"Wherefore art thou, Romeo? To make us laugh at Navy Pier"the original10.1093/gmo/9781561592630.article.O006772"Ram-leela Review Roundup: Critics Hail Film as Best Adaptation of Romeo and Juliet"Archived10.2307/31946310047-77293194631"Romeo and Juliet get Twitter treatment""Juliet's Nurse by Lois Leveen""Romeo and Juliet: Orlando Bloom's Broadway Debut Released in Theaters for Valentine's Day"Archived"Romeo and Juliet Has No Balcony"10.1093/gmo/9781561592630.article.O00778110.2307/2867423286742310.1076/enst.82.2.115.959510.1080/00138380601042675"A plague o' both your houses: error in GCSE exam paper forces apology""Juliet of the Five O'Clock Shadow, and Other Wonders"10.2307/33912430027-4321339124310.2307/28487440038-7134284874410.2307/29123140149-661129123144728341M"Weekender Guide: Shakespeare on The Drive""balcony"UK public library membership"romeo"UK public library membership10.1017/CCOL9780521844291"Post-Zionist Critique on Israel and the Palestinians Part III: Popular Culture"10.2307/25379071533-86140377-919X2537907"Capulets and Montagues: UK exam board admit mixing names up in Romeo and Juliet paper"Istoria Novellamente Ritrovata di Due Nobili Amanti2027/mdp.390150822329610820-750X"GCSE exam error: Board accidentally rewrites Shakespeare"10.2307/29176390149-66112917639"Exam board apologises after error in English GCSE paper which confused characters in Shakespeare's Romeo and Juliet""From Mariotto and Ganozza to Romeo and Guilietta: Metamorphoses of a Renaissance Tale"10.2307/37323537323510.2307/2867455286745510.2307/28678912867891"10 Questions for Taylor Swift"10.2307/28680922868092"Haymarket Theatre""The Zeffirelli Way: Revealing Talk by Florentine Director""Michael Smuin: 1938-2007 / Prolific dance director had showy career"The Life and Art of Edwin BoothRomeo and JulietRomeo and JulietRomeo and JulietRomeo and JulietEasy Read Romeo and JulietRomeo and Julieteeecb12003684p(data)4099369-3n8211610759dbe00d-a9e2-41a3-b2c1-977dd692899302814385X313670221313670221