QGis - 使用 QgsGeometry 查找内部多边形

问题描述

我有两组外多边形和内多边形:

outer = ['polygon ((12.017638 50.930127,12.017623 50.93007,12.017566 50.930032,12.0175 50.930088,12.017429 50.930033,12.017384 50.929994,12.017524 50.929566,12.017698 50.929335,12.018089 50.928871,12.018359 50.928622,12.018532 50.928481,12.019235 50.92804,12.020587 50.927065,12.021214 50.926752,12.02431 50.924725,12.028879 50.922249,12.029075 50.922131,12.029554 50.921545,12.029955 50.920918,12.030422 50.920157,12.030911 50.9196,12.031467 50.919155,12.032721 50.918299,12.034134 50.917434,12.035279 50.916686,12.036797 50.91577,12.03779 50.915206,12.038882 50.914801,12.040202 50.914389,12.041054 50.91394,12.041691 50.913516,12.042941 50.912596,12.04353 50.912187,12.045142 50.911001,12.046223 50.910291,12.046982 50.9099,12.048039 50.909282,12.049119 50.908748,12.050357 50.908253,12.051565 50.907923,12.052533 50.907696,12.053568 50.907319,12.054603 50.906815,12.055287 50.906348,12.055844 50.905834,12.056143 50.905476,12.056453 50.90492,12.056891 50.903749,12.056988 50.903395,12.057029 50.903008,12.057205 50.902247,12.057362 50.901759,12.057631 50.901328,12.057975 50.900923,12.058774 50.900187,12.059163 50.899819,12.05979 50.899268,12.059866 50.899202,12.060251 50.898846,12.061047 50.898183,12.062063 50.897457,12.062874 50.896941,12.063009 50.896786,12.063233 50.89667,12.063547 50.896394,12.063585 50.896166,12.064079 50.895604,12.064452 50.89518,12.064815 50.894722,12.065222 50.894211,12.06544 50.893773,12.065605 50.893386,12.065638 50.892819,12.06553 50.892421,12.065434 50.892006,12.065384 50.891576,12.065381 50.89125,12.065452 50.890754,12.065527 50.890382,12.06571 50.889963,12.066233 50.889105,12.066454 50.888494,12.066532 50.888034,12.066439 50.887562,12.066152 50.886723,12.06587 50.885775,12.065777 50.885547,12.065728 50.88543,12.06572 50.88541,12.065722 50.885269,12.065466 50.883905,12.06526 50.883048,12.065169 50.88234,12.065168 50.882272,12.065165 50.88216,12.065017 50.881902,12.064921 50.881335,12.064735 50.880526,12.064783 50.880276,12.06484 50.87998,12.065064 50.879558,12.065416 50.87912,12.065521 50.878944,12.065882 50.878752,12.066487 50.878538,12.066801 50.878455,12.067499 50.878268,12.068145 50.878098,12.068375 50.877995,12.068846 50.877637,12.06903 50.877435,12.069166 50.877105,12.069236 50.876781,12.069334 50.87636,12.069558 50.875723,12.069792 50.875198,12.070114 50.874729,12.070642 50.874169,12.072179 50.872621,12.073041 50.871682,12.073175 50.871488,12.073172 50.871349,12.073396 50.871064,12.074087 50.870127,12.07473 50.869288,12.075295 50.868663,12.075799 50.86821,12.076584 50.867566,12.077055 50.86717,12.077388 50.866931,12.077844 50.866668,12.077868 50.866653,12.078141 50.866488,12.078457 50.865933,12.078778 50.865521,12.078909 50.864947,12.078993 50.864054,12.07886 50.863147,12.078842 50.862791,12.078758 50.86261,12.07862 50.862314,12.078598 50.862268,12.078564 50.862195,12.078022 50.861309,12.077271 50.860034,12.077118 50.859605,12.077026 50.859141,12.077008 50.858663,12.077082 50.858314,12.077051 50.857909,12.077118 50.857542,12.077228 50.857295,12.077118 50.857056,12.077133 50.856941,12.077226 50.856952,12.077257 50.856857,12.077278 50.856764,12.077176 50.856743,12.077198 50.8567,12.077493 50.856785,12.077612 50.856847,12.077886 50.85699,12.077766 50.857189,12.077735 50.857394,12.077514 50.85787,12.077361 50.858303,12.077355 50.858847,12.077358 50.859166,12.077445 50.859596,12.077714 50.860177,12.078123 50.860838,12.078785 50.862044,12.078868 50.862314,12.078899 50.862403,12.079014 50.862734,12.0791 50.862979,12.07917 50.863283,12.079299 50.863833,12.079326 50.864383,12.079275 50.864967,12.079037 50.865616,12.078663 50.866197,12.078228 50.866683,12.077504 50.867182,12.076388 50.868063,12.075786 50.868537,12.07524 50.869178,12.074852 50.869656,12.074773 50.869754,12.073862 50.871109,12.073816 50.871177,12.0735 50.871639,12.073112 50.872155,12.071466 50.873832,12.071162 50.874104,12.07044 50.874835,12.070066 50.875384,12.069878 50.875869,12.069704 50.876404,12.06946 50.87734,12.069247 50.877616,12.069012 50.877829,12.068607 50.878163,12.066848 50.878707,12.06632 50.878875,12.06597 50.87907,12.065616 50.879306,12.065412 50.879639,12.065228 50.880005,12.065096 50.880156,12.065036 50.880325,12.065125 50.880885,12.065215 50.880897,12.065345 50.881318,12.065532 50.882254,12.065544 50.882325,12.06559 50.882585,12.065842 50.883824,12.066174 50.885307,12.066186 50.885361,12.066213 50.88548,12.066323 50.885973,12.066809 50.88755,12.066879 50.888036,12.066791 50.888587,12.066571 50.889132,12.066155 50.88986,12.065861 50.890447,12.065743 50.890822,12.065713 50.891502,12.065781 50.891934,12.066004 50.89282,12.065976 50.89335,12.065803 50.893845,12.065542 50.894308,12.065247 50.894729,12.064565 50.895616,12.063971 50.896388,12.063515 50.896779,12.062394 50.897629,12.061325 50.898465,12.060496 50.899029,12.060304 50.899319,12.060198 50.899478,12.059818 50.899795,12.058586 50.900826,12.058084 50.90132,12.057798 50.901688,12.057646 50.902056,12.057488 50.902782,12.057267 50.903673,12.05708 50.90438,12.056752 50.905124,12.056326 50.905798,12.055882 50.906314,12.055322 50.906726,12.054893 50.906986,12.054679 50.907117,12.054089 50.907404,12.052869 50.90789,12.052419 50.908022,12.050802 50.908405,12.049891 50.908685,12.049377 50.908921,12.048302 50.909451,12.048004 50.909672,12.047082 50.910177,12.045768 50.910931,12.044407 50.911951,12.043663 50.912512,12.043478 50.912651,12.042503 50.913376,12.041989 50.913781,12.041756 50.913885,12.040985 50.914367,12.040646 50.914521,12.040272 50.914654,12.039601 50.914934,12.037516 50.915729,12.036651 50.916182,12.035215 50.917132,12.034327 50.91775,12.033299 50.918391,12.03198 50.919227,12.031185 50.919845,12.03075 50.920312,12.030579 50.920625,12.030444 50.920917,12.030192 50.921518,12.029734 50.922018,12.029103 50.922507,12.025964 50.924259,12.024656 50.925016,12.024282 50.925264,12.023757 50.925593,12.02357 50.925722,12.02268 50.926353,12.020918 50.927487,12.019825 50.92822,12.019185 50.928627,12.018545 50.929236,12.018325 50.929516,12.018245 50.929704,12.018213 50.929872,12.018162 50.930116,12.017908 50.930127,12.017638 50.930127))','polygon ((12.066059 50.882316,12.066667 50.882383,12.066763 50.882311,12.066852 50.882291,12.066929 50.882244,12.067214 50.882246,12.067232 50.881916,12.068469 50.881731,12.068583 50.88177,12.068816 50.881814,12.06905 50.881825,12.06931 50.881825,12.069503 50.881804,12.069855 50.881742,12.069833 50.882548,12.07008 50.882575,12.07082 50.882297,12.071106 50.88169,12.071641 50.880631,12.071086 50.880511,12.071194 50.880309,12.071212 50.880271,12.071224 50.880242,12.071342 50.880009,12.071927 50.880129,12.071979 50.880141,12.072051 50.880156,12.072065 50.88013,12.072598 50.879133,12.072652 50.879027,12.072734 50.878866,12.072748 50.878844,12.072946 50.878477,12.072919 50.878458,12.072776 50.878371,12.072645 50.878462,12.072247 50.878236,12.072195 50.878199,12.072142 50.878187,12.072069 50.878145,12.072182 50.87807,12.072133 50.878043,12.072082 50.878012,12.072161 50.877925,12.072081 50.877828,12.071532 50.87665,12.071479 50.876257,12.071527 50.875691,12.071688 50.875401,12.071703 50.875374,12.071719 50.875346,12.072216 50.874453,12.071362 50.874184,12.06572 50.882276,12.065716 50.882255,12.065868 50.882269,12.065868 50.882295,12.066059 50.882316))']

inner = ['polygon ((12.059366 50.900033,12.059356 50.900049,12.05929 50.900089,12.059227 50.900113,12.059162 50.900101,12.059166 50.90009,12.059188 50.900084,12.059195 50.900069,12.059209 50.900064,12.059237 50.900029,12.059265 50.900019,12.059357 50.900025,12.059366 50.900033))','polygon ((12.06035 50.899021,12.060233 50.899286,12.060048 50.899454,12.059786 50.899646,12.059635 50.899809,12.059551 50.89994,12.059486 50.900009,12.059456 50.900033,12.059428 50.900027,12.059422 50.900009,12.059435 50.899952,12.059507 50.899818,12.059628 50.899634,12.059714 50.899443,12.059862 50.899345,12.060018 50.899206,12.060221 50.899065,12.06035 50.899021))']

我想找出哪个内多边形包含在哪个外多边形中。我的例子两个内部都在外部的第一个

这是我天真的方法

for p in inner:
    p2 = QgsGeometry.fromWkt(p)
    for q in outer:
        q2 = QgsGeometry.fromWkt(q)
        print(p2.within(q2))

如何使用 QgsGeometry 有效地做到这一点?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)