In [4]:
from shapely.geometry import Polygon, Point
from rockfish2.navigation.p190 import P190
In [2]:
p190 = P190(database='/Users/ncm/Dev/Rockfish2/rockfish2/navigation/p190/tests/temp.sqlite')
[2014-10-17 13:11] INFO: rockfish: Connecting to existing database: /Users/ncm/Dev/Rockfish2/rockfish2/navigation/p190/tests/temp.sqlite
In [10]:
bins = p190.read_sql('SELECT * FROM cmp_line')
nbins = len(bins)
bins[0:5]
Out[10]:
bin
easting
northing
distance
x1
y1
x2
y2
x3
y3
x4
y4
0
1000
65654.350000
3598677.200000
0.00
65676.533210
3598722.118491
65681.953542
3598719.006819
65632.166790
3598632.281509
65626.746458
3598635.393181
1
1001
65651.238328
3598682.620332
6.25
65673.421538
3598727.538823
65678.841870
3598724.427151
65629.055118
3598637.701841
65623.634786
3598640.813513
2
1002
65648.126656
3598688.040664
12.50
65670.309866
3598732.959155
65675.730198
3598729.847483
65625.943446
3598643.122173
65620.523114
3598646.233845
3
1003
65645.014984
3598693.460996
18.75
65667.198194
3598738.379486
65672.618526
3598735.267814
65622.831774
3598648.542505
65617.411442
3598651.654177
4
1004
65641.903312
3598698.881327
25.00
65664.086522
3598743.799818
65669.506854
3598740.688146
65619.720102
3598653.962837
65614.299770
3598657.074509
In [6]:
poly = [Polygon(([bins.loc[i, 'x1'], bins.loc[i, 'y1']],
[bins.loc[i, 'x2'], bins.loc[i, 'y2']],
[bins.loc[i, 'x3'], bins.loc[i, 'y3']],
[bins.loc[i, 'x4'], bins.loc[i, 'y4']]))\
for i in range(nbins)]
In [12]:
rec = p190.read_sql('SELECT * FROM receiver_groups WHERE point_number=91015')
rec[0:5]
Out[12]:
line_name
point_number
receiver_group
easting
northing
cable_depth
streamer_id
offset
midpoint_easting
midpoint_northing
cmp_model
cmp_bin
0
MGL1407MCS15
91015
468
63568.9
3600379.1
9.1
1
158.825974
63528.30
3600447.35
None
None
1
MGL1407MCS15
91015
467
63579.7
3600372.8
9.0
1
169.870068
63533.70
3600444.20
None
None
2
MGL1407MCS15
91015
466
63590.6
3600366.6
9.0
1
181.078464
63539.15
3600441.10
None
None
3
MGL1407MCS15
91015
465
63601.4
3600360.3
9.0
1
192.472803
63544.55
3600437.95
None
None
4
MGL1407MCS15
91015
464
63612.1
3600353.9
9.0
1
204.015318
63549.90
3600434.75
None
None
In [26]:
pts = [Point(rec.ix[i]['midpoint_easting'], rec.ix[i]['midpoint_northing']) for i in range(len(rec))]
pt_in_bin = [np.nonzero([p.contains(pt) for p in poly])[0] for pt in pts]
In [27]:
pt_in_bin
Out[27]:
[array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([79]),
array([78]),
array([77]),
array([76]),
array([75]),
array([74]),
array([73]),
array([72]),
array([71]),
array([69, 70]),
array([69]),
array([68]),
array([66]),
array([65]),
array([64]),
array([63]),
array([62]),
array([61]),
array([60]),
array([59]),
array([58]),
array([57]),
array([56]),
array([55]),
array([53]),
array([52]),
array([51]),
array([50]),
array([49]),
array([48]),
array([47]),
array([46]),
array([45]),
array([44]),
array([43]),
array([42]),
array([40]),
array([39]),
array([38]),
array([37]),
array([36]),
array([35]),
array([34]),
array([33]),
array([32]),
array([31]),
array([30, 31]),
array([29, 30]),
array([27, 28]),
array([26]),
array([25]),
array([24]),
array([23]),
array([22]),
array([21]),
array([20]),
array([19]),
array([18]),
array([17, 18]),
array([16, 17]),
array([15]),
array([13, 14]),
array([12, 13]),
array([11]),
array([10]),
array([9]),
array([8]),
array([7]),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([5]),
array([3, 4]),
array([2, 3]),
array([1]),
array([0]),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64),
array([], dtype=int64)]
In [40]:
def find_polys(pts, poly, nsearch_max=200):
npoly = len(poly)
search_range = [0, npoly]
inbins = -999 * np.ones(len(pts))
for ipt, pt in enumerate(pts):
ip = range(*search_range)
_inbins = np.nonzero([poly[i].contains(pt) for i in ip])[0]
if len(_inbins) > 0:
inbins[ipt] = _inbins[0]
ip0 = _inbins[0]
search_range = [max(0, ip0 - nsearch_max), min(npoly, ip0 + nsearch_max)]
return inbins
In [41]:
pt_in_bin = find_polys(pts, poly)
In [46]:
[(i, pt_in_bin[i]) for i in range(len(pt_in_bin)) if pt_in_bin[i] > 0]
Out[46]:
[(227, 79.0),
(228, 78.0),
(229, 77.0),
(230, 76.0),
(231, 75.0),
(232, 74.0),
(233, 73.0),
(234, 72.0),
(235, 71.0),
(236, 69.0),
(237, 69.0),
(238, 68.0),
(239, 66.0),
(240, 65.0),
(241, 64.0),
(242, 63.0),
(243, 62.0),
(244, 61.0),
(245, 60.0),
(246, 59.0),
(247, 58.0),
(248, 57.0),
(249, 56.0),
(250, 55.0),
(251, 53.0),
(252, 52.0),
(253, 51.0),
(254, 50.0),
(255, 49.0),
(256, 48.0),
(257, 47.0),
(258, 46.0),
(259, 45.0),
(260, 44.0),
(261, 43.0),
(262, 42.0),
(263, 40.0),
(264, 39.0),
(265, 38.0),
(266, 37.0),
(267, 36.0),
(268, 35.0),
(269, 34.0),
(270, 33.0),
(271, 32.0),
(272, 31.0),
(273, 30.0),
(274, 29.0),
(275, 27.0),
(276, 26.0),
(277, 25.0),
(278, 24.0),
(279, 23.0),
(280, 22.0),
(281, 21.0),
(282, 20.0),
(283, 19.0),
(284, 18.0),
(285, 17.0),
(286, 16.0),
(287, 15.0),
(288, 13.0),
(289, 12.0),
(290, 11.0),
(291, 10.0),
(292, 9.0),
(293, 8.0),
(294, 7.0),
(299, 5.0),
(300, 3.0),
(301, 2.0),
(302, 1.0)]
In [ ]:
Content source: rvbelefonte/Rockfish2
Similar notebooks: