o
    h'                 "   @   sH  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dl	Z	d dl
mZ d dlZd dlmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZmZmZmZ edd Zd	Ze	j d
ddd Z!e	j d
ddd Z"e	j d
ddd Z#e	j$%dg d d fegddfdgd d fedgddfeeegd d feeeegddfgdd Z&dd Z'dd Z(dd Z)dd Z*dd Z+e	j$%d d!d!ged d d"gg d#dgge	j$,d$d%d& Z-d'd( Z.e	j$%d)g eg fg egg g gfg dg fg dgg g gfdgeg fdgegg g gfdgdg fdgdgg g gfegdg fegdgg g gfegeg fegegg g gfegeg fegegg g gfeegeg feegegg g gfdeged d d*d*dgfdeged d d*d*gd gdggfdeeged d d*d*dgfedeged d d*d*d dgfedeged d d*d*gd d gd dggfeegeegdgdggfeeeegeeeegd+gd+ggfgd,d- Z/e	j$%d.ed/d/g fed/d/gg g gfedddgfeddgd gdggfedded0d0eddgd dgddggfed d ddd dgfed d ddgd d gd dggfed1d1d2d2g d3fed1d1d2d2gg d4g d3gfed d dded5d5d6d6ed1d1d2d2gg d7g d8gfe0ed+d+dg d9fe0ed+d+dgg d:g d9gfed1d;gd;d1ggg d<fed1d;gd;d1gggg d:g d<gfgd=d> Z1e	j$%d.ed d d gfed d gd gd ggfed/d/d gfed/d/gd gd ggfed d/d gfed d/gd gd ggfeddd dgfeddgd d gd dggfed d ddd dgfed d ddgd d gd dggfe0ed+d+d/dd+gfe0ed+d+d/gd d gdd+ggfed1d;gd;d1ggg d?fed1d;gd;d1gggg d@g d?gfgdAdB Z2e	j$%d.ed/d/d dgfed/d/gd d gd dggfedddgfeddgd gdggfed d ddd dgfed d ddgd d gd dggfed d dCdCg dDfed d dCdCgg d:g dDgfed d dded5d5d6d6eddd+d+gg dEg dFgfe0ed+d+eg d9fe0ed+d+egg d:g d9gfe0ed+d+d+e g dGfe0ed+d+d+e gg d4g dGgfed1d;gd;d1ggg d<fed1d;gd;d1gggg d:g d<gfgdHdI Z3e	j$%dJdKdLgdMdN Z4e	j$%dOdPg dDfdQg fdRdgfdSg fdTg fdUg dDfdVg fdWdgfgdXdY Z5dZd[ Z6e	j$%dOe	j7dPdge	j$j8ed\k d]d^d_dQg fdRg fdSg fdTdgfd`g fdUg fdVg fdWg fg	dadb Z9e	j$%d.ed/d/g fed/d/gg g gfedddgfeddgd gdggfed+d+dcdcg ddfed+d+dcdcgg d@g ddgfed d dded5d5d6d6ed+d+dcdcgg deg dfgfe0ed+d+dd+gfe0ed+d+dgd gd+ggfe0ed+d+d+e g d9fe0ed+d+d+e gg d:g d9gfed1d1gd;d;ggd1d;gfed1d1gd;d;gggd d gd1d;ggfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggd;gfed1d;gd;d;gggd gd;ggfgdgdh Z:e	j$%d.ed d d gfed d gd gd ggfed/d/d gfed/d/gd gd ggfed d/g fed d/gg g gfeddd dgfeddgd d gd dggfed d ddd dgfed d ddgd d gd dggfed d dded5d5d6d6eddd+d+gg dig djgfe0ed+d+d/dd+gfe0ed+d+d/gd d gdd+ggfe0eddedgfe0eddegd gdggfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggdcd;gfed1d;gd;d;gggd d gdcd;ggfgdkdl Z;e	j$%d.ed d/d gfed d/gd gd ggfed/d d gfed/d gd gd ggfed/d/d dgfed/d/gd d gd dggfedddgfeddgd gdggfed d ddd dgfed d ddgd d gd dggfed d dCdCg dDfed d dCdCgg d:g dDgfed d dded5d5d6d6eddd+d+gg dEg dFgfe0ed+d+eg d9fe0ed+d+egg d:g d9gfe0ed+d+d+e g dGfe0ed+d+d+e gg d4g dGgfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggd;gfed1d;gd;d;gggd gd;ggfgdmdn Z<e	j$%d.ed/d/g fed/d/gg g gfedddgfeddgd gdggfed+d+dcdcg fed+d+dcdcgg g gfe0ed+d+dg fe0ed+d+dgg g gfed1d1gd;d;ggg fed1d1gd;d;gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfgdodp Z=e	j$%d.ed d g fed d gg g gfed/d/d gfed/d/gd gd ggfed d/g fed d/gg g gfeddg feddgg g gfed d ddg fed d ddgg g gfe0ed+d+d/g fe0ed+d+d/gg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfedqdqgd;d;ggdcgfedqdqgd;d;gggd gdcggfgdrds Z>e	j$%d.ed d/d gfed d/gd gd ggfed/d d gfed/d gd gd ggfed/d/d dgfed/d/gd d gd dggfedddgfeddgd gdggfed d ddg fed d ddgg g gfed d d/d/d gfed d d/d/gd gd ggfed d dCdCg fed d dCdCgg g gfe0ed+d+ed+gfe0ed+d+egd gd+ggfe0ed+d+d+e g fe0ed+d+d+e gg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfedtdugdtdvggd1gfedtdugdtdvgggd gd1ggfgdwdx Z?e	j$%d.ed/d/g fed/d/gg g gfedddgfeddgd gdggfed+d+dcdcdyd1gfed+d+dcdcgd d gdyd1ggfe0ed+d+dd+gfe0ed+d+dgd gd+ggfe0ed+d+d+e g d9fe0ed+d+d+e gg d:g d9gfed1d1gd;d;ggd1d;gfed1d1gd;d;gggd d gd1d;ggfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggd;gfed1d;gd;d;gggd gd;ggfgdzd{ Z@e	j$%d.ed d g fed d gg g gfed d ddd gfed d ddgd gd ggfe0ed+d+d/g fe0ed+d+d/gg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfed1d1gdcdcggg fed1d1gdcdcgggg g gfgd|d} ZAe	j$%d.ed d g fed d gg g gfed d ddg fed d ddgg g gfed d dddgfed d ddgd gdggfe0ed+d+eg fe0ed+d+egg g gfe0ed+d+d+e d+gfe0ed+d+d+e gd gd+ggfed1d;gd;d1ggg fed1d;gd;d1gggg g gfgd~d ZBe	j$%d.ed/d/g fed/d/gg g gfeddg feddgg g gfed+d+dcdcg fed+d+dcdcgg g gfe0ed+d+dg fe0ed+d+dgg g gfed1d1gd;d;ggg fed1d1gd;d;gggg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfgdd ZCe	j$%d.ed d g fed d gg g gfed d dCdCg fed d dCdCgg g gfe0ed+d+d/g fe0ed+d+d/gg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfed1d1gdcdcggg fed1d1gdcdcgggg g gfgdd ZDe	j$%d.ed d g fed d gg g gfed d ddd dgfed d ddgd d gd dggfed d ddd dgfed d ddgd d gd dggfe0ed+d+eddygfe0ed+d+egd d gddyggfe0ed+d+d+e g dfe0ed+d+d+e gg d@g dgfed1d;gd;d;ggg fed1d;gd;d;gggg g gfgdd ZEe	j$%d.eddg fed+d+dcdcg fe0ed+d+dg fed1d;gd;d;ggg fgdd ZFe	j$%d.ed d g fed d gg g gfed d dCdCdgfed d dCdCgd gdggfe0ed+d+d/dd+gfe0ed+d+d/gd d gdd+ggfeGddgd gfeGddggd gd ggfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;gd;dggg fed1d;gd;d;gd;dgggg g gfgdd ZHe	j$%d.ed d/g fed d/gg g gfed d dCdCg fed d dCdCgg g gfe0ed+d+eg fe0ed+d+egg g gfed1d;gd;d;gd;dggd;gfed1d;gd;d;gd;dgggd gd;ggfgdd ZIe	j$%d.ed/d/g fed/d/gg g gfeddg feddgg g gfed+d+dcdcd+dcgfed+d+dcdcgd d gd+dcggfe0ed+d+dg fe0ed+d+dgg g gfeddgdgfeddggd gdggfed1d1gd;d;ggg fed1d1gd;d;gggg g gfgdd ZJe	j$%d.ed d d gfed d gd gd ggfed/d/g fed/d/gg g gfeddd dgfeddgd d gd dggfed d dddgfed d ddgd gdggfe0ed+d+d/g fe0ed+d+d/gg g gfe0edded g fe0edded gg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;gd;dggdcd;gfed1d;gd;d;gd;dgggd d gdcd;ggfgdd ZKe	j$%d.ed d/g fed d/gg g gfeee d d gfeee d gd gd ggfed d ddg fed d ddgg g gfeee d ddd gfeee d ddgd gd ggfe0ed+d+ee g fe0ed+d+ee gg g gfed d gd;d;gd;dggg fed d gd;d;gd;dgggg g gfgdd ZLe	j$%d.ed/d/g fed/d/gg g gfedddgfeddgd gdggfed+d+dcdcg ddfed+d+dcdcgg d@g ddgfe0ed+d+dd+gfe0ed+d+dgd gd+ggfe0ed+d+d+e g d9fe0ed+d+d+e gg d:g d9gfed1d1gd;d;ggd1d;gfed1d1gd;d;gggd d gd1d;ggfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggd;gfed1d;gd;d;gggd gd;ggfgdd ZMe	j$%d.ed d g fed d gg g gfed d dCdCd gfed d dCdCgd gd ggfeddd+d+ddgfeddd+d+gd d gddggfe0ed+d+d/g fe0ed+d+d/gg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfed1d1gdcdcggg fed1d1gdcdcgggg g gfgdd ZNe	j$%d.ed d g fed d gg g gfed d ddg fed d ddgg g gfed d dddgfed d ddgd gdggfe0ed+d+eg fe0ed+d+egg g gfe0ed+d+d+e d+gfe0ed+d+d+e gd gd+ggfed1d;gd;d1ggg fed1d;gd;d1gggg g gfgdd ZOe	j$%d.ed/d/g fed/d/gg g gfedddgfeddgd gdggfed+d+dcdcg fed+d+dcdcgg g gfe0ed+d+dg fe0ed+d+dgg g gfed1d1gd;d;ggg fed1d1gd;d;gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfgdd ZPe	j$%d.ed d d gfed d gd gd ggfed/d/d gfed/d/gd gd ggfed d/g fed d/gg g gfeddd dgfeddgd d gd dggfeGddgddggdgfeGddgddgggd gdggfeGdCdCgddggg feGdCdCgddgggg g gfed d ddg fed d ddgg g gfe0ed+d+d/g fe0ed+d+d/gg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfedqdqgd;d;ggdcgfedqdqgd;d;gggd gdcggfgdd ZQe	j$%d.ed d/d gfed d/gd gd ggfed/d d gfed/d gd gd ggfedddgfeddgd gdggfed/d/d dgfed/d/gd d gd dggfeGd d gddggg feGd d gddgggg g gfeGdCdCgddggdgfeGdCdCgddgggd gdggfed d ddg fed d ddgg g gfed d d/d/d gfed d d/d/gd gd ggfed d dCdCg fed d dCdCgg g gfe0ed+d+ed+gfe0ed+d+egd gd+ggfe0ed+d+d+e g fe0ed+d+d+e gg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfedtdugdtdvggd1gfedtdugdtdvgggd gd1ggfgdd ZRe	j$%d.ed/d/g fed/d/gg g gfedddgfeddgd gdggfeGd d gddggdgfeGd d gddgggd gdggfeGd/d/gddggddgfeGd/d/gddgggd d gddggfeGd dgdd ggdgfeGd dgdd gggd gdggfed+d+dcdcdyd1gfed+d+dcdcgd d gdyd1ggfe0ed+d+dd+gfe0ed+d+dgd gd+ggfe0ed+d+d+e g d9fe0ed+d+d+e gg d:g d9gfed1d1gd;d;ggd1d;gfed1d1gd;d;gggd d gd1d;ggfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggd;gfed1d;gd;d;gggd gd;ggfgdd ZSe	j$%d.ed d g fed d gg g gfeGd d gddggg feGd d gddgggg g gfeGd d gddggg feGd d gddgggg g gfeGd dgdd ggg feGd dgdd gggg g gfed1d;gd;d1ggg fed1d;gd;d1gggg g gfed1d;gd;d;ggg fed1d;gd;d;gggg g gfed1d1gdcdcggg fed1d1gdcdcgggg g gfed d ddg fed d ddgg g gfed d ddg fed d ddgg g gfe0ed+d+d/g fe0ed+d+d/gg g gfgdd ZTe	j$%d.ed d g fed d gg g gfeGd d gddggg feGd d gddgggg g gfed d ddg fed d ddgg g gfed d dddgfed d ddgd gdggfe0ed+d+eg fe0ed+d+egg g gfe0ed+d+d+e d+gfe0ed+d+d+e gd gd+ggfed1d;gd;d1ggg fed1d;gd;d1gggg g gfgdd ZUe	j$jVedkdd^e	j$%d ed d ed d gddgeeggdd ZWe	j$jVedk dd^e	j$%ded d ddfed d gddfed d ddfed d gddfed d gdgdfed d d dgdfed d gd dgdfed d dggdfed d gdggdfg	dd ZXe	j$jVedk dd^e	j$%dg ddg fdgdg g gfeddd g feddgd g g gfeddd0g feddgd0g g gfeddejYg feddgejYg g gfe dg fe gdg g gfeddd/d gfeddgd/d gd ggfedddg dDfeddgdg d:g dDgfed+d+dCg d9fed+d+gdCg d:g d9gfed/d/dd dgfed/d/gdd d gd dggfded/d/gdddgd dggfed/d/eddgdg dg dgfed deddgddgg dg dFgfed d d+d+d g dFfed d d+d+gd g d@g dFgfed d d+d+dg dFfed d d+d+gdg d@g dFgfedddddCg dFfeddddgdCg d@g dFgfeddgdCdCggdg dDfeddgdCdCgggdg d:g dDgfed/d/gddggdg dâfed/d/gddgggdg d@g dâgfddń ZZe	j$jVedk dd^e	j$%dddg fdgdg g gfed/d/d d gfed/d/gd d gd ggfed/d/dd dgfed/d/gdd d gd dggfeddd/ddgfeddgd/d d gddggfed d ddd/d dgfed d ddgd/d d gd dggfed/d/dCdCd/d dgfed/d/dCdCgd/d d gd dggfed1d1gd;d;ggd/g d?fed1d1gd;d;gggd/g d@g d?gfed1d;gd;d1ggdCd1dcgfed1d;gd;d1gggdCd d gd1dcggfgddǄ Z[e	j$jVedk dd^e	j$%ded d d d gfed d gd d gd ggfed d d/d gfed d gd/d gd ggfed d dCd dgfed d gdCd d gd dggfed/d/dd dgfed/d/gdd d gd dggfed/d/d/d dgfed/d/gd/d d gd dggfed d ddd d dgfed d ddgd d d gd dggfed d dddg dDfed d ddgdg d:g dDgfed1d1gd;d;ggd/d1d;gfed1d1gd;d;gggd/d d gd1d;ggfed1d1gd;d;ggdg dȢfed1d1gd;d;gggdg dɢg dȢgfgdd˄ Z\dd̈́ Z]e	j$%d d!gddτ Z^e	j$%d ddgedddggddф Z_e	j$%d eegeddeggddӄ Z`e	j$%d.eddd fedddfedddfedded d gdd gfeddeddgddgfeddԃed5d5gd dgfed/d/dddfe0eddedfe0ed+d+ed+fedud1gd;d;ggd;fed1d;gd;d1ggdcfgddׄ Zae	j$%d.ed/d/d dgfed d d+d+g dFfed1d1gd;d;ggd1d;gfgddل Zbe	j$%d.ed/d/d fedCd/d fed/dCdddfeGd d/gddggd fgddۄ Zce	j$%d.eddddgfed d ddd dgfed/d/dCdCd dgfed+d+d1d1g dܢfe0eddeddgfe0ed+d+edd+gfed1d1gd;d;ggg d?fedud1gd;d;ggdcd;gfed1d;gd;d1ggd1dcgfg	ddބ Zde	j$%d.ed d d fedddfed d1ddcd+fed1d;gd;d1ggdcfgdd Zee	j$%d.ed/d/d dgfed d ddd dgfed/d/dCdCg dDfed+d+d1d1g dfe0eddedd+gfe0ed+d+eg d9fed1d1gd;d;ggd1d;gfedud1gd;d;ggd1d;gfgdd Zfdd Zge	j$%d d!d"ggdd Zhe	j$%dddg fdgdg g gfddg g ffdgdg g gg ffgdd Zie	j$%d.eg fegg g gfeegddgdd+ggfgdd Zje	j$%d.eddd gfeddgd gd ggfedddgfeddgd gdggfedddgfeddgd gdggfed/d/d dgfed/d/gd d gd dggfedded d gd dgdd ggfeddeddgd dgddggfeddԃed5d5gd dgd dggfed/d/dddgfed/d/ddgd gdggfed d d+d+g dFfed d d+d+gg d@g dFgfe0eddddd+gfe0edddgd d gdd+ggfe0ed+d+d/d+gfe0ed+d+d/gd gd+ggfedud1gd;d;ggd;gfedud1gd;d;gggd gd;ggfed1d;gd;d1ggdcgfed1d;gd;d1gggd gdcggfed1d1gd;d;ggd1d;gfed1d1gd;d;gggd d gd1d;ggfed/d/gddggg dâfed/d/gddgggg d@g dâgfgdd Zke	j$%d.ed/d/d gfed/d/gd gd ggfeddddgfeddgd d gddggfed d ddd dgfed d ddgd d gd dggfed/d/dCdCd dgfed/d/dCdCgd d gd dggfed d d/d/ed+d+d1d1gg dg dgfe0edddg dfe0edddgg d:g dgfe0ed+d+d/dd+gfe0ed+d+d/gd d gdd+ggfed1d1gd;d;ggg d?fed1d1gd;d;gggg d@g d?gfedud1gd;d;ggdcd;gfedud1gd;d;gggd d gdcd;ggfed1d;gd;d1ggd1dcgfed1d;gd;d1gggd d gd1dcggfgdd Zle	j$%d.ed d d gfed d gd gd ggfedddgfeddgd gdggfed/d/d dgfed/d/gd d gd dggfed d ddd dgfed d ddgd d gd dggfed/d/dCdCg dDfed/d/dCdCgg d:g dDgfed d dded+d+d1d1gg dg dgfe0eddedd+gfe0eddegd d gdd+ggfe0ed+d+eg d9fe0ed+d+egg d:g d9gfed1d1gd;d;ggd1d;gfed1d1gd;d;gggd d gd1d;ggfedud1gd;d;ggd1d;gfedud1gd;d;gggd d gd1d;ggfed1d;gd;d1ggdcgfed1d;gd;d1gggd gdcggfgdd Zme	j$%ded/d/dd dgfed/d/gdd d gd dggfed/d/d*d dgfed/d/gd*d d gd dggfed/d/dg fed/d/gdg g gfed/d/ed d gddgd ggfgdd Zne	j$%ded/d/d fed/d/gd fed/d/d0fed/d/gd0fgdd  Zodd Zpe	j$%d.ed d d gdgffed d gd gd ggdgffed/d/d dgddgffed/d/gd d gd dggddgffed d ddd dgddgffed d ddgd d gd dggddgffgdd Zqe	j$%deddddgfeddgdd gdggfedddd dgfeddgdd d gd dggfeddeddgdg dg d	gfgd
d Zre	j$%d.eddg feddgg g gfgdd Zse	j$%dedddfedddgfeddgg feddgdgfgdd Zte	j$%dedddfedddgfeddgg feddgdgfgdd Zudd Zvdd ZwdS (      N)ThreadPoolExecutor)assert_array_equal)
LineString
MultiPointPointSTRtreeboxgeos_version)UnsupportedGEOSVersionError)assert_geometries_equal)emptyempty_line_stringempty_pointignore_invalidpoint   g&.>session)scopec                  c   s(    t tdtd} t| V  d S )N
   )shapelypointsnparanger   geoms r   U/var/www/html/scripts/venv/lib/python3.10/site-packages/shapely/tests/test_strtree.pytree   s   r   c                  c   sN    t d} t d}d}tt | | | g||| ggj}t|V  d S )Nr      )r   r   r   linestringsarrayTr   )xyoffsetr   r   r   r   	line_tree#   s   

&r%   c                  c   s8    t jt tdtdtt dd} t| V  d S )Nr       )	quad_segs)r   bufferr   r   r   HALF_UNIT_DIAGEPSr   r   r   r   r   	poly_tree,   s
   r+   zgeometry,count, hitsr   c                 C   s:   t | }t||ksJ |tddddj|ksJ d S )Nr   d   )r   lenqueryr   size)geometrycounthitsr   r   r   r   	test_init6   s   "r3   c                   C   s:   t t tdg W d    d S 1 sw   Y  d S )NzNot a geometry)pytestraises	TypeErrorr   r   r   r   r   test_init_with_invalid_geometryK   s   "r7   c                  C   s^   t  } t dd}| |g}t|}d } d }dd l}|  |tdddd dgks-J d S )Nr   r   )r   r   gccollectr.   r   tolist)point1point2r   r   r8   r   r   r   test_referencesP   s   
&r=   c                  C   sJ   t tdtd} t| }d | d d < dd l}|  |t d S )Nr   r   )	r   r   r   r   r   r8   r9   r.   r   )arrr   r8   r   r   r   test_flush_geometriesb   s   r?   c                  C   sD   t tg} t| }t| |j tdd| d< tt|jd  d S )Nr   )r   r    r   r   r   
geometriesr   r   )r>   r   r   r   r   test_geometries_propertyo   s
   rA   c                 C   s   t dd tdD }t|}d}| d }t|d}|| W d    n1 s+w   Y  tjtj	t
|gtjd}|j|d |  |jd	ksNJ d S )
Nc                 S   s   g | ]
}t ||d qS )皙?)r   r(   ).0ir   r   r   
<listcomp>{   s    z+test_pickle_persistence.<locals>.<listcomp>   a   
import pickle
import sys

from shapely import Point

pickled_strtree = sys.stdin.buffer.read()
print("received pickled strtree:", repr(pickled_strtree))
tree = pickle.loads(pickled_strtree)

tree.query(Point(0, 0))
tree.nearest(Point(0, 0))
print("done")
zunpickle-strtree.pyw)stdin)inputr   )r   rangepickledumpsopenwrite
subprocessPopensys
executablestrPIPEcommunicatewait
returncode)tmp_pathr   pickled_strtreeunpickle_scriptfilenameoutprocr   r   r   test_pickle_persistencey   s   
r^   r0   zI am not a geometryzstill not a geometryzin a mixed arrayz8ignore:Creating an ndarray from ragged nested sequences:c                 C   s>   t ttf | | W d    d S 1 sw   Y  d S N)r4   r5   r6   
ValueErrorr.   r   r0   r   r   r   test_query_invalid_geometry   s   "rb   c                 C   sH   t jtdd | tddgg W d    d S 1 sw   Y  d S )NzArray should be one dimensionalmatch      ?)r4   r5   r6   r.   r   r   r   r   r   test_query_invalid_dimension   s   "rg   z tree_geometry, geometry,expectedr   rF   c                 C   s   t | }t||| d S r_   )r   r   r.   )tree_geometryr0   expectedr   r   r   r   test_query_with_none_and_empty   s   (rj   zgeometry,expectedre         )rl            	   )r   r   r   r   r   r,   n   )r   r   r   r   r   r   r   )r   r   rl   rn   ro   rp   rq   )r   rF      )r   r   r   ro   )rl   rn   ro   c                 C      t | || d S r_   r   r.   r   r0   ri   r   r   r   test_query_points   s   "rw   )rs   rl   rn   ro   )r   r   r   r   c                 C   rt   r_   ru   r%   r0   ri   r   r   r   test_query_lines   s   ry   g      ?)r   r   r   )r   r   r   r   )r   r   r   rF   )r   r   rF   rs   rl   c                 C   rt   r_   ru   r+   r0   ri   r   r   r   test_query_polygons  s   &r{   	predicatebad_predicatedisjointc                 C   sH   t jtdd | jtdd|d W d    d S 1 sw   Y  d S )Nzis not a valid optionrc   r   r|   )r4   r5   r`   r.   r   )r   r|   r   r   r   test_query_invalid_predicateE  s   	"r   zpredicate,expected
intersectswithincontainsoverlapscrossescovers
covered_bycontains_properlyc                 C   s0   t dddd}t| t| j||d| d S )Nr   r   r   )r   r   preparer   r.   )r   r|   ri   geomr   r   r   test_query_prepared_inputsR  s   
r   c                 C   sV   t tddddtddddg}| j|dd}t|d  t|| j|dd d S )Nr   r   rF   rl   r   r   )r   r    r   r.   r   r   r   )r   r   ri   r   r   r   )test_query_with_partially_prepared_inputse  s   "r   rF      r   zGEOS < 3.13)reason)markstouchesc                 C   s   t   tddgdtdg}W d    n1 sw   Y  tdk rCttj | j||d W d    d S 1 s<w   Y  d S t	| j||d| d S )Nr   nanr   r   )
r   r   r   floatr	   r4   r5   GEOSExceptionr.   r   )r   r|   ri   line_nanr   r   r   test_query_predicate_errorsn  s   "r   rn   )rF   rs   rl   rn   )r   r   r   r   r   r   )r   r   rF   rs   rl   rn   c                 C      t | j|dd| d S Nr   r   ru   rv   r   r   r   test_query_intersects_points  s   4r   )r   r   r   r   r   )r   r   r   r   rF   c                 C   r   r   ru   rx   r   r   r   test_query_intersects_lines  s   %r   c                 C   r   r   ru   rz   r   r   r   test_query_intersects_polygons     .r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_within_points     r   g      @c                 C   r   r   ru   rx   r   r   r   test_query_within_lines=      r   g      @g      @g      @c                 C   r   r   ru   rz   r   r   r   test_query_within_polygons`  s   )r   rs   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_contains_points  r   r   c                 C   r   r   ru   rx   r   r   r   test_query_contains_lines     r   c                 C   r   r   ru   rz   r   r   r   test_query_contains_polygons     r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_overlaps_points  s   r   c                 C   r   r   ru   rx   r   r   r   test_query_overlaps_lines  r   r   )r   r   rs   rl   c                 C   r   r   ru   rz   r   r   r   test_query_overlaps_polygons'  s   r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_crosses_pointsH  s   r   )r   r   )r   r   rp   c                 C   r   r   ru   rx   r   r   r   test_query_crosses_linesY  r   r   c                 C   r   r   ru   rz   r   r   r   test_query_crosses_polygonst  s   r   )rk   rk   )r   r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_touches_points  r   r   gHz>c                 C   r   r   ru   rx   r   r   r   test_query_touches_lines  s   r   c                 C   r   r   ru   rz   r   r   r   test_query_touches_polygons  r   r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_covers_points  r   r   c                 C   r   r   ru   rx   r   r   r   test_query_covers_lines  r   r   c                 C   r   r   ru   rz   r   r   r   test_query_covers_polygons&  r   r   c                 C   r   Nr   r   ru   rv   r   r   r   test_query_covered_by_pointsC  r   r   g      @c                 C   r   r   ru   rx   r   r   r   test_query_covered_by_linesb  s   'r   c                 C   r   r   ru   rz   r   r   r   test_query_covered_by_polygons  r   r   c                 C   r   Nr   r   ru   rv   r   r   r   #test_query_contains_properly_points  s   *r   c                 C   r   r   ru   rx   r   r   r   "test_query_contains_properly_lines  s   r   c                 C   r   r   ru   rz   r   r   r   %test_query_contains_properly_polygons  s   r   )rF   r   r   zGEOS >= 3.10c                 C   sD   t jtdd | j|ddd W d    d S 1 sw   Y  d S )Nzrequires GEOS >= 3.10rc   dwithinr   r|   distance)r4   r5   r
   r.   ra   r   r   r   test_query_dwithin_geos_version3  s   "r   zGEOS < 3.10zgeometry,distance,matchz#distance parameter must be providedfooz!could not convert string to floatz.Could not broadcast distance to match geometryg      ?zshould be one dimensionalc                 C   sD   t jt|d | j|d|d W d    d S 1 sw   Y  d S )Nrc   r   r   )r4   r5   r`   r.   )r   r0   r   rd   r   r   r   #test_query_dwithin_invalid_distance<  s   "r   zgeometry,distance,expectedg      ?g      ?)r   r   r   )r   r   r   g?g      ?)r   r   r   r   g      @)r   r   rF   rs   c                 C      t | j|d|d| d S Nr   r   ru   )r   r0   r   ri   r   r   r   test_query_dwithin_pointsP  s   Er   c                 C   r   r   ru   )r%   r0   r   ri   r   r   r   test_query_dwithin_lines  s   r   )rF   rs   rl   rn   ro   rp   rq   )r   r   r   r   r   r   r   c                 C   r   r   ru   )r+   r0   r   ri   r   r   r   test_query_dwithin_polygons  s   !r   c                  C   s   t g } | td u sJ d S r_   )r   nearestr   rf   r   r   r   test_nearest_empty_tree  s   r   c                 C   :   t t | | W d    d S 1 sw   Y  d S r_   )r4   r5   r6   r   ra   r   r   r   test_nearest_invalid_geom     "r   c                 C   r   r_   r4   r5   r`   r   ra   r   r   r   test_nearest_none  r   r   c                 C   r   r_   r   ra   r   r   r   test_nearest_empty  s   "r   irq   c                 C   rt   r_   r   r   rv   r   r   r   test_nearest_points  s   r   c                 C      |  |}||v sJ d S r_   r   )r   r0   ri   resultr   r   r   test_nearest_points_equidistant  s   
r   c                 C   rt   r_   r   rx   r   r   r   test_nearest_lines#     
r   )r   rF   rs   rl   c                 C   r   r_   r   )r%   r0   ri   r   r   r   r   test_nearest_lines_equidistant0  s   
r   c                 C   rt   r_   r   rz   r   r   r   test_nearest_polygonsM  r   r   )rF   rs   rl   c                 C   r   r_   r   )r+   r0   ri   r   r   r   r   !test_nearest_polygons_equidistantZ  s   
r   c                  C   s2   t g } t| tg  t| tgg g g d S r_   )r   r   query_nearestr   rf   r   r   r   test_query_nearest_empty_trees  s   r   c                 C   r   r_   )r4   r5   r6   r   ra   r   r   r   test_query_nearest_invalid_geomy  r   r   z!geometry,return_distance,expectedFTc                 C   sJ   |r| j |dd\}}t||d  t||d  d S t|  || d S )NTreturn_distancer   r   )r   r   )r   r0   r   ri   indexr   r   r   r   test_query_nearest_none  s
   
r   c                 C   rt   r_   r   r   rv   r   r   r   test_query_nearest_empty_geom  s   r   c                 C   rt   r_   r   rv   r   r   r   test_query_nearest_points  s   %r   )r   r   r   r   r   )r   r   rF   rs   rl   )r   r   rF   c                 C   rt   r_   r   rx   r   r   r   test_query_nearest_lines  s    r   )r   r   r   r   r   )r   r   rF   rs   rl   c                 C   rt   r_   r   rz   r   r   r   test_query_nearest_polygons  s   r   zgeometry,max_distance,expectedrB   c                 C      t | j||d| d S )Nmax_distancer   )r   r0   r   ri   r   r   r   test_query_nearest_max_distance  s   r   zgeometry,max_distancec                 C   sB   t jtdd | j||d W d    d S 1 sw   Y  d S )Nz#max_distance must be greater than 0rc   r   r4   r5   r`   r   )r   r0   r   r   r   r   'test_query_nearest_invalid_max_distance  s   
"r   c                 C   sJ   t jtdd | jtdddgd W d    d S 1 sw   Y  d S )Nz$parameter only accepts scalar valuesrc   re   r   r   )r4   r5   r`   r   r   rf   r   r   r   )test_query_nearest_nonscalar_max_distance+  s   "r   g        g-?c                 C   s:   |\}}| j |dd\}}t|| tt|d| d S )NTr   rs   )r   r   r   round)r   r0   ri   expected_indicesexpected_distactual_indicesactual_distr   r   r   "test_query_nearest_return_distance0  s   
r   zgeometry,exclusive,expected)r   r   r   r   )r   r   r   rF   c                 C   r   N	exclusiver   )r   r0   r   ri   r   r   r   test_query_nearest_exclusiveD  s   r   c                 C   s(   t tddg} t| j|dd| d S )Nr   Tr   )r   r   r   r   rv   r   r   r   'test_query_nearest_exclusive_no_resultsR  s   r   zgeometry,exclusiveinvalidzalso invalidc                 C   >   t t | j||d W d    d S 1 sw   Y  d S r   r   )r   r0   r   r   r   r   $test_query_nearest_invalid_exclusive^     "r   zgeometry,all_matchesc                 C   r   )Nall_matchesr   )r   r0   r  r   r   r   &test_query_nearest_invalid_all_matchesm  r   r  c                 C   sX   t dd}t| j|ddddg | j|dd}t|dgs(t|dgs*J d S d S )Nre   Tr  r   r   F)r   r   r   r   array_equal)r   r   indicesr   r   r   test_query_nearest_all_matches|  s   
(r  c            
   
      sd  t tjddd} d}t dtj| d dtj| d }tt| d }| d | | |d|  | d| d|  | d| d  g tt|d }|d | ||d|  |d| d|  |d| d  g}g tdD ]}|| }t	|}
| qu fdd}t }	t|	|ttdtd W d    d S 1 sw   Y  d S )Ni  rF   r   i rs   c                    s&   | \}}| } | }|j |ddS r   )r.   )idxsrD   jr   rightpolygons_partstreesr   r   thread_func  s   z0test_strtree_threaded_query.<locals>.thread_func)r   polygonsr   randomrandnr   intr-   rJ   r   appendr   listmap	itertoolsproduct)
r  Nr   npoints_partsrD   leftr   r  poolr   r
  r   test_strtree_threaded_query  s0   ,

""r  )xr  mathrK   rO   rQ   concurrent.futuresr   numpyr   r4   numpy.testingr   r   r   r   r   r   r   r	   shapely.errorsr
   shapely.testingr   shapely.tests.commonr   r   r   r   r   sqrtr)   r*   fixturer   r%   r+   markparametrizer3   r7   r=   r?   rA   r^   filterwarningsrb   rg   rj   r(   rw   ry   r{   r   r   r   paramxfailr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   skipifr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r   r   <module>   s	    	





	



!
	




 &



'&"$
!"$
&$
%



	
&

3&"$
$& 
-
 
 
(&$ 

"


"

""
&

 *
"
&$ 

"

" 
&" 
-"&"&$ 
)
"
	"
	
 %* +, -/ 02&36;C  &&  &






	

	


	
*
""""  $$
$*""$$$
*""$$ 
 
	& *	(


	