-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathPolygonGateTest.html
215 lines (178 loc) · 16.2 KB
/
PolygonGateTest.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>
<script type="text/javascript" src="inner/js/jquery-1.10.2.js"></script>
<script type="text/javascript" src="inner/js/mm-utils.js"></script>
<script type="text/javascript" src="inner/js/constants.js"></script>
<script type="text/javascript" src="inner/js/model/MMProject.js"></script>
<script type="text/javascript" src="inner/js/model/MMLayer.js"></script>
<script type="text/javascript" src="inner/js/model/MMAnnotationList.js"></script>
<script type="text/javascript" src="inner/js/marker/LayerMarkerOptions.js"></script>
<script type="text/javascript" src="inner/js/marker/MarkerGenerator.js"></script>
<script type="text/javascript" src="inner/js/data/DateTimeModel.js"></script>
<script type="text/javascript" src="inner/js/data/TimeRangeSelectionModel.js"></script>
<script type="text/javascript" src="inner/js/data/MMKMLLoader.js"></script>
<script type="text/javascript" src="inner/js/data/moving-data.js"></script>
<script type="text/javascript" src="inner/js/selection/selection-pool.js"></script>
<script type="text/javascript" src="inner/js/selection/selection-controller.js"></script>
<script type="text/javascript" src="inner/js/selection/PolygonGateTester.js"></script>
<script type="text/javascript" src="inner/js/selection/ExpressionQuery.js"></script>
<script type="text/javascript">
'use strict';
var gTestKMLLoader = null;
var gTestProject = null;
var gDriverApp = null;
function launch() {
setupMap();
loadTestData();
// polygon check
if (gTestKMLLoader.getNumOfPolygons() < 1) {
throw "No valid polygons";
}
var testPolygon = gTestKMLLoader.getPolygonAt(0);
console.log("Test polygon", testPolygon);
gDriverApp = new DriverApp(testPolygon, gTestProject);
setTimeout(function() {
doHitTest(null);
doHitTest({start:0, end:10});
doHitTest({start:25*60, end:40*60});
doHitTest({start:0, end:1});
doHitTest(null, true);
doHitTest(null, false, 'mode = 11');
}, 90);
}
function doHitTest(range, ptonly, expr) {
ptonly = !!ptonly;
var layer = gTestProject.getLayerList().getLayerAt(0);
var selp = layer.localSelectionPool;
selp.clear();
gTestProject.timeRangeSelection.clear();
console.log('-----------------------------');
if (ptonly) {
console.log(": : Points only");
}
if (expr) {
console.log("+ + With expression: "+expr);
}
if (!range) {
console.log("TimeRange: None");
} else {
console.log("TimeRange: " + range.start + " - " + range.end);
gTestProject.timeRangeSelection.selectSingleRange(range.start, range.end);
}
gDriverApp.run(ptonly, expr);
var n = selp.count();
console.log('N=',n);
for (var i in selp.idmap) {
console.log(' ' + i);
}
return n;
}
function setupMap() {
var box = document.getElementById('map-box');
var mapOptions = {
center: new google.maps.LatLng(35.7, 139.8),
zoom: 15,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var gmap = new google.maps.Map(box, mapOptions);
}
function loadTestData() {
loadTestDataKML();
loadTrajectoryData();
}
function loadTestDataKML() {
var sourceXML = $('#test-kml').text();
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(sourceXML, "application/xml");
var valid = mobmap.KMLLoader.isDocumentValid(xmlDoc);
if (!valid) {
throw "KML is invalid";
}
gTestKMLLoader = new mobmap.KMLLoader(xmlDoc);
}
function loadTrajectoryData() {
var TestTrj = [
{_id:1, _time: 0*60, y:35.692001, x:139.739592, mode:7},
{_id:1, _time:20*60, y:35.695678, x:139.749784, mode:8},
{_id:1, _time:40*60, y:35.70589, x:139.749355, mode:9},
{_id:2, _time: 0*60, y:35.692001, x:139.729592, mode:101},
{_id:2, _time:20*60, y:35.695678, x:139.739784, mode:102},
{_id:2, _time:40*60, y:35.70589, x:139.739355, mode:103},
{_id:3, _time: 2*60, y:35.7014, x:139.746, mode:10},
{_id:3, _time:20*60, y:35.7008, x:139.7469, mode:11},
{_id:4, _time:10, y:35.700331, x:139.747, mode:20}
];
gTestProject = new mobmap.MMProject();
var newLayer = gTestProject.addMovingObjectLayer();
newLayer.initTimeRange();
var mdat = newLayer.newMovingData();
for (var i in TestTrj) {
var sourceRecord = TestTrj[i];
newLayer.registerNewMovingObjectRecord(sourceRecord);
}
mdat.close();
console.log(newLayer.dataTimeRange)
}
function DriverApp(testPolygon, prj) {
this.testPolygon = testPolygon;
this.testProject = prj;
this.selectionController = new mobmap.SelectionController(this);
}
DriverApp.prototype = {
run: function(ptonly, expr) {
var tester = new mobmap.PolygonGateTester(this.testPolygon, ptonly);
if (expr) {
tester.useExpressionCondition(expr);
}
this.selectionController.runGateSelectionWithTestProvider(tester);
},
getCurrentProject: function() {
return this.testProject;
},
updateGateBusyDialog: function(r) {
}
};
</script>
</head>
<body onload="void launch()">
<div id="map-box" style="height: 200px"></div>
<script type="text/plain" id="test-kml"><?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.opengis.net/kml/2.2 http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd http://www.google.com/kml/ext/2.2 http://code.google.com/apis/kml/schema/kml22gx.xsd">
<Document id="13_over100sim1">
<name>13_over100sim1</name>
<Snippet></Snippet>
<Folder id="FeatureLayer0">
<name>13_over100sim1</name>
<Snippet></Snippet>
<Placemark id="ID_00001">
<name>130001</name>
<styleUrl>#PolyStyle01</styleUrl>
<MultiGeometry>
<Polygon>
<extrude>0</extrude> <altitudeMode>clampedToGround</altitudeMode>
<outerBoundaryIs><LinearRing><coordinates> 139.7460976142036,35.70148191266762,0 139.7460379262221,35.70160450914041,0 139.7459072340673,35.70162742117534,0 139.7455689775436,35.70189274006278,0 139.7451419974579,35.70160447053422,0 139.7451060011868,35.70148837346815,0 139.7451691290766,35.70138450267693,0 139.7453976467761,35.70141443209515,0 139.7455411974236,35.70128123171109,0 139.7453525160765,35.70115290297812,0 139.7453910564951,35.70095253404336,0 139.7458423919631,35.70074758213413,0 139.7459807328573,35.70078525562023,0 139.7460407248401,35.70094401292091,0 139.7462184362297,35.70080665047241,0 139.7466025528034,35.70080508112788,0 139.7466283210592,35.7006695775888,0 139.7468387641665,35.70051167552379,0 139.7467004943266,35.7005456896888,0 139.7464544191925,35.70076384542821,0 139.7463332571505,35.70077375686424,0 139.7462451685605,35.70068848496128,0 139.7461495337317,35.7003373141332,0 139.7460042293782,35.70020895571943,0 139.7458556982732,35.70022306429305,0 139.7457460673255,35.70013077318378,0 139.7455463738019,35.7001885789156,0 139.7454076174043,35.69999655030546,0 139.7452875975048,35.70004071061949,0 139.745153331436,35.69998307128637,0 139.7451285416035,35.69976063929057,0 139.7449065808632,35.69975935507487,0 139.7448093848375,35.69964796326568,0 139.7447051417534,35.69979473801246,0 139.7445181637374,35.69980739688185,0 139.7443192256551,35.69996542934771,0 139.7444957059171,35.70023500558815,0 139.7444311031566,35.70049830098144,0 139.7442782580139,35.7006009037352,0 139.7440525363078,35.70058493449148,0 139.7438808944046,35.70037995205026,0 139.743888552094,35.70004254084066,0 139.7441470414764,35.6999052269497,0 139.7441491413754,35.69974237143435,0 139.7443847879835,35.6996240521241,0 139.7445061199759,35.69941527542244,0 139.7447160028244,35.6994292814474,0 139.7448110063075,35.69957944122769,0 139.7448446364182,35.699285233443,0 139.7446365126162,35.6990213912817,0 139.744424795143,35.69893324155745,0 139.7444010026652,35.69877232408273,0 139.7444760348787,35.69866430291983,0 139.7442786247158,35.69855970999188,0 139.7439717077393,35.69861681695824,0 139.7437782482952,35.69848952964043,0 139.7436526948938,35.69877116940738,0 139.7439671338453,35.69914394553038,0 139.7439909910859,35.69941174202366,0 139.7438781747657,35.69955545637843,0 139.7435681848179,35.6997192220298,0 139.7433180573154,35.69971774266323,0 139.7431489173221,35.69947962830163,0 139.7432650368381,35.6992116294508,0 139.7432320352944,35.69896136793771,0 139.7430358311241,35.69887426412372,0 139.7429579920984,35.6987194782301,0 139.743040289918,35.69846806467722,0 139.7434203847008,35.69825241533844,0 139.7437082639475,35.69833953353498,0 139.7437669626574,35.69805454649652,0 139.7439667470034,35.69791345096098,0 139.7441638037215,35.69791364879759,0 139.7443319571438,35.69801639002375,0 139.7445660290446,35.69794676180298,0 139.744709275745,35.69803179807958,0 139.7447703199341,35.69818679621444,0 139.7445812915104,35.69862645135039,0 139.7447320619345,35.69868172006967,0 139.7447915161182,35.69879710217311,0 139.7451138169085,35.69886207456395,0 139.7453696478834,35.69861456405584,0 139.745486418538,35.69861825396539,0 139.7455640902826,35.69870552326319,0 139.7457983456371,35.69856215423926,0 139.7458464782315,35.69843988961711,0 139.7461055350871,35.69831180906461,0 139.7462437041885,35.69814475010865,0 139.7463917712446,35.69814075171254,0 139.7465387555349,35.69830010975401,0 139.7466562771247,35.69831732456642,0 139.7467375236523,35.69820644715649,0 139.7468703939635,35.69817122430314,0 139.7470507934568,35.69831559154457,0 139.7469687627445,35.69864741617153,0 139.7471596762085,35.6987758690108,0 139.7471891164406,35.69905396274005,0 139.7474673414733,35.69920253430452,0 139.7475484971682,35.69908183360086,0 139.7477139382271,35.69910426447721,0 139.7478103904894,35.69899366495665,0 139.7479339672128,35.69900292796391,0 139.7479765968546,35.69886270927862,0 139.7480939349766,35.69882311572168,0 139.7483270356254,35.69889787723843,0 139.7483300627683,35.69913113257551,0 139.7484824096835,35.69900030819944,0 139.7487369465556,35.69894894970276,0 139.7487432022215,35.6987898812319,0 139.7490142623086,35.69849553763249,0 139.7488761354395,35.69833286199165,0 139.748948627961,35.69816171652147,0 139.7491615765948,35.69814774733814,0 139.7492558057629,35.69830795704132,0 139.749320243069,35.69823635032447,0 139.7491203426741,35.69804266246975,0 139.7492131373778,35.69778024301404,0 139.7494962097371,35.69775842274497,0 139.7496085341574,35.69788338981805,0 139.7496199429733,35.69805103062456,0 139.7497732944416,35.69801750299156,0 139.7498118015923,35.69788179260755,0 139.7499265100925,35.69779968360532,0 139.7501529107927,35.69787076509713,0 139.750200102724,35.69800370466398,0 139.7501378876511,35.69815537621579,0 139.7498220799883,35.69830510075389,0 139.749766745625,35.69843629834157,0 139.7494390462313,35.6986102892849,0 139.7493144470112,35.6988983484119,0 139.7491107721879,35.69894186931407,0 139.7490863789996,35.6991172910567,0 139.7488022499563,35.69931681374717,0 139.7487708492462,35.69944115760048,0 139.7485025689533,35.69964495836445,0 139.7484483182731,35.69977806431323,0 139.7483236452805,35.69980711781734,0 139.7481284510899,35.70010064392763,0 139.7479952840035,35.70014340939421,0 139.747962465965,35.70029653784552,0 139.7477945445992,35.7004846841049,0 139.7475217272195,35.70061594016418,0 139.7474778655086,35.70077416687241,0 139.7470070624259,35.70103850550846,0 139.7468541588148,35.70102684670967,0 139.746681708454,35.7011238601789,0 139.7466237705554,35.701268712172,0 139.7464722590975,35.70128306266339,0 139.7464021803509,35.70140885532717,0 139.7460976142036,35.70148191266762,0</coordinates></LinearRing></outerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7469280128732,35.70051836467405,0 139.747003377855,35.70058602065939,0 139.7470047223303,35.70048592162892,0 139.7469280128732,35.70051836467405,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7473059160134,35.70034806904105,0 139.7473810192963,35.70045194431888,0 139.7474498344968,35.70033696959905,0 139.7473900862385,35.70025494244768,0 139.7473059160134,35.70034806904105,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7468408001936,35.70016253625694,0 139.7469810836203,35.70017435603532,0 139.747049343034,35.70000649129189,0 139.747007525444,35.69981527116516,0 139.7472262971716,35.69965765868122,0 139.7470578388945,35.6996973403754,0 139.7469564025706,35.69962799996188,0 139.747021855185,35.69931646314013,0 139.7468749446497,35.69925345125851,0 139.7467247317836,35.69899952321827,0 139.7467253289096,35.69878065793157,0 139.7463906516346,35.69856222254498,0 139.7460652194244,35.69867164936619,0 139.7461131901829,35.69893670652306,0 139.7462214226805,35.69898710271905,0 139.7464296516653,35.69890297832951,0 139.7465614697845,35.69900275449383,0 139.7465569695989,35.69919837770417,0 139.7464207016559,35.69929198633783,0 139.7460785060685,35.69924525399638,0 139.7459470557644,35.69907508340585,0 139.7457300250958,35.69897435576507,0 139.7455366034511,35.69910364859884,0 139.745350415928,35.69901505011102,0 139.7453015917499,35.69909067409792,0 139.7454078763169,35.69914743839285,0 139.7454377149345,35.69929598839152,0 139.7459006768655,35.69936302471606,0 139.7459833092773,35.69952061469527,0 139.7462906354652,35.69964761691979,0 139.7463805964509,35.69980245227529,0 139.7465193842987,35.69975319999897,0 139.7466838325121,35.6998311370265,0 139.7467301889782,35.70000711634368,0 139.7466562458456,35.70013447562659,0 139.7465178186261,35.70018473244548,0 139.7463577033462,35.70011359609027,0 139.7463052108327,35.70017516277586,0 139.7465897841761,35.70029976291313,0 139.7468408001936,35.70016253625694,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7477288247831,35.6998460459105,0 139.747862739203,35.69977475664933,0 139.7478825800274,35.69963213677607,0 139.7477864128269,35.69952903221861,0 139.7477145498171,35.69957547950487,0 139.747711925609,35.69969826033458,0 139.7477288247831,35.6998460459105,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7474415103029,35.69968933638227,0 139.7474192736704,35.69969803012923,0 139.7474376603095,35.69972312930445,0 139.7474415103029,35.69968933638227,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7482865095459,35.69948272519564,0 139.7484967287243,35.69934443014792,0 139.7483425849438,35.69929045375451,0 139.7481368596728,35.6993908738577,0 139.7482865095459,35.69948272519564,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7481077315361,35.69939632914679,0 139.7480822006866,35.69939629587373,0 139.7480593678054,35.69942090312277,0 139.7481077315361,35.69939632914679,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7477584861534,35.6992492351734,0 139.7477671754022,35.69925388017071,0 139.7477588216004,35.69924787449929,0 139.7477584861534,35.6992492351734,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7450934715771,35.69912015568534,0 139.7450884030017,35.69914685565524,0 139.7451675361359,35.69915688308938,0 139.7450934715771,35.69912015568534,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7454474896964,35.69959158652475,0 139.7453589163781,35.69956334512377,0 139.74531972574,35.69967312355922,0 139.7454633834348,35.69979721019379,0 139.7454474896964,35.69959158652475,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7457626885711,35.69992915329374,0 139.7458135461191,35.69988265564697,0 139.74573967041,35.69977376844773,0 139.7457626885711,35.69992915329374,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7480128179723,35.69912607481172,0 139.7480379765011,35.69911253012192,0 139.7480104149821,35.699107304164,0 139.7480128179723,35.69912607481172,0</coordinates></LinearRing></innerBoundaryIs>
<innerBoundaryIs><LinearRing><coordinates> 139.7494957259509,35.69820934996873,0 139.7495175677828,35.69821737551632,0 139.7495131359225,35.69819883059852,0 139.7494957259509,35.69820934996873,0</coordinates></LinearRing></innerBoundaryIs>
</Polygon>
</MultiGeometry>
</Placemark>
</Folder>
</Document>
</kml>
</script>
</body>
</html>