ó
f÷ Yc           @   su   d  d l  m Z d  d l m Z d  d l Z d  d l Z d d
 d „  ƒ  YZ d d d „  ƒ  YZ d d d	 „  ƒ  YZ d S(   iÿÿÿÿ(   t   Polygon(   t   distanceNt   Gridc           B   sM   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   sW   
    x y are gps 
    cor_x, cor_y are the grid number cordinate in two dimensions
    c         C   sr   | |  _  | |  _ | |  _ | |  _ | | |  _ | | |  _ | |  _ | |  _ |  j |  j f |  _ g  |  _	 d  S(   N(
   t   start_xt   start_yt   step_xt   step_yt   end_xt   end_yt   cor_xt   cor_yt   gridCoordinatet   intersectTransRegion(   t   selfR   R   R   R   R	   R
   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   __init__   s    						c         C   s   | |  _  | |  _ d  S(   N(   R	   R
   (   R   R	   R
   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   set_corrdinates   s    	c         C   s   | |  _  | |  _ d  S(   N(   R   R   (   R   R   R   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   set_start_x_y   s    	c         C   sD   | |  j  k r@ | |  j k  r@ | |  j k r@ | |  j k  r@ t St S(   N(   R   R   R   R   t   Truet   False(   R   t   test_xt   test_y(    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   isInGrid   s    <c         C   s   |  j  S(   N(   R   (   R   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   getGridCoordinate    s    c         C   s&   | |  j  k r" |  j  j | ƒ n  d  S(   N(   R   t   append(   R   t   transRegion(    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   addIntersectTransRegion"   s    c         C   s   |  j  S(   N(   R   (   R   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   getIntersectTransRegion%   s    (
   t   __name__t
   __module__t   __doc__R   R   R   R   R   R   R   (    (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyR      s   						t   TransRegionc           B   sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C   s   | |  _  | |  _ g  |  _ d  S(   N(   t   verticest	   region_idt   grids(   R   R   R    (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyR   *   s    		c         C   s   |  j  S(   N(   R    (   R   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   getRegionID/   s    c         C   s&   | |  j  k r" |  j  j | ƒ n  d  S(   N(   R!   R   (   R   t   grid(    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   addGrid1   s    c         C   s   |  j  S(   N(   R!   (   R   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   getGrids4   s    c         C   s   |  j  S(   N(   R   (   R   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   getVertices6   s    c         C   sÆ   t  | ƒ } t } | d } x£ t d | ƒ D]’ } | | d | k | | d | k k r¸ | | | d | | d | | | d | | d | | d | | d k  r¸ | } n  | } q, W| S(   Ni   i    (   t   lenR   t   range(   R   R   t   testxt   testyt   nvertt   ct   jt   i(    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   pnpoly8   s    
+?

c         C   s   |  j  |  j | d | d ƒ S(   Ni    i   (   R/   R   (   R   t   point(    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   pointInRegionH   s    c         C   s   |  j  S(   N(   R    (   R   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   getGeoIDK   s    (
   R   R   R   R"   R$   R%   R&   R/   R1   R2   (    (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyR   )   s   							t   RegionHandlerc           B   sk   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z RS(   c         C   s8   | d |  _  | d |  _ | d |  _ | d |  _ d  S(   Nt   min_xt   min_yt   max_xt   max_y(   R4   R5   R6   R7   (   R   t   minmax(    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyR   P   s    c   	   	   C   sG  g  |  _  | |  _ | |  _ |  j |  j t |  j d ƒ |  _ |  j |  j t |  j d ƒ |  _	 |  j |  j t d ƒ |  _
 |  j |  j	 t d ƒ |  _ x£ t d |  j ƒ D] } g  } |  j
 |  j | } x\ t d |  j ƒ D]H } |  j |  j	 | } t | | |  j |  j	 | | ƒ } | j | ƒ qã W|  j  j | ƒ q° Wd  S(   Ni   i   i    (   R!   t
   grid_widtht   grid_heightR6   R4   t   floatt   x_grid_stepR7   R5   t   y_grid_stept   grid_start_xt   grid_start_yR(   R   R   (	   R   R9   R:   t   iit   one_rowt   current_start_xt   jjt   current_start_yt   one_grid(    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt
   buildGridsV   s    			$$!c         C   sT   g  } x> | D]6 } | d } | d } t  | | ƒ } | j | ƒ q W| |  _ d  S(   Nt	   geo_arrayt   geo_id(   R   R   t   transRegions(   R   t   out_edget   all_regionst
   one_regionRG   RH   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   buildTransRegionsg   s    

c         C   s^   xW |  j  D]L } | j ƒ  } x7 | D]/ } |  j | ƒ } | j | ƒ | j | ƒ q# Wq
 Wd  S(   N(   RI   R&   t   findPointGridR   R$   (   R   RL   R   t   verticeRE   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   mapRegionToGridp   s    c         C   s   |  j  S(   N(   RI   (   R   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   getTransRegions}   s    c         C   s   |  j  | ƒ } | j ƒ  S(   N(   RN   R   (   R   R0   t   target_grid(    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   regionCandiates€   s    c         C   s]   | d } | d } t  | |  j |  j ƒ } t  | |  j |  j ƒ } |  j | | } | S(   Ni    i   (   t   intR>   R<   R?   R=   R!   (   R   R0   t   xt   yt   grid_xt   grid_yRR   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyRN   „   s    

c         C   s-   | GHx! | D] } | j  | ƒ r | Sq Wd  S(   N(   R1   t   None(   R   R0   t   regionsRL   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   findPointInRegions   s
    c         C   s^   | d |  j  k oI | d |  j k  oI | d |  j k oI | d |  j k  } | sZ d GHn  | S(   Ni    i   s   INFO: point not in range(   R4   R6   R5   R7   (   R   R0   t   result(    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   pointInRange”   s    Lc         C   s‡   |  j  | ƒ s d  S|  j | ƒ } d GHd Gt | ƒ GH|  j | | ƒ } | d  k rƒ d GHd Gt |  j ƒ GH|  j | |  j ƒ } n  | S(   Ns%   INFO: find point in candidate regionss   INFO: length of candidate s   INFO: find point in all regionss&   INFO: length of transportation regions(   R]   RY   RS   R'   R[   RI   (   R   R0   t
   candidatesR\   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   findPointTransRegion™   s    c         C   s+   |  j  | | ƒ |  j | ƒ |  j ƒ  d  S(   N(   RF   RM   RP   (   R   R9   R:   RJ   (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt
   initialize¦   s    (   R   R   R   RF   RM   RP   RQ   RS   RN   R[   R]   R_   R`   (    (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyR3   O   s   												(    (    (    (	   t   shapely.geometryR    t   scipy.spatialR   t   jsont   pdbR   R   R3   (    (    (    sH   /home/zf72/Dropbox/projects/off-peak-trans/src/exploring/TransRegions.pyt   <module>   s   #&