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

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

                    QGIS export composer to PDF scale the map [closed] Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Print Composer QGIS 2.6, how to export image?QGIS 2.8.1 print composer won't export all OpenCycleMap base layer tilesSave Print/Map QGIS composer view as PNG/PDF using Python (without changing anything in visible layout)?Export QGIS Print Composer PDF with searchable text labelsQGIS Print Composer does not change from landscape to portrait orientation?How can I avoid map size and scale changes in print composer?Fuzzy PDF export in QGIS running on macSierra OSExport the legend into its 100% size using Print ComposerScale-dependent rendering in QGIS PDF output

                    PDF-ში გადმოწერა სანავიგაციო მენიუproject page