0

私は現在、歩行者用経路の地図ルーティングシステムに取り組んでいますが、これまでに誰かがこれを行ったかどうかはわかりません。しかし、私はグーグルアースを使用してパスのさまざまなウェイポイント座標を収集しました。

以下のデータは、Excelに保存してMatlabにインポートするパスウェイの座標ポイントです。

1   1.37723400000000    103.839645000000
2   1.37722000000000    103.839741000000
3   1.37723300000000    103.839843000000
4   1.37723600000000    103.839968000000
5   1.37724100000000    103.840125000000
6   1.37723900000000    103.840245000000
7   1.37724900000000    103.840435000000
8   1.37725700000000    103.840674000000
9   1.37724800000000    103.840896000000
10  1.37726500000000    103.841071000000
11  1.37728300000000    103.841190000000
12  1.37729500000000    103.841393000000
13  1.37734600000000    103.841591000000
14  1.37736500000000    103.841918000000
15  1.37739800000000    103.842093000000
16  1.37742900000000    103.842400000000
17  1.37744900000000    103.842629000000
18  1.37748100000000    103.842895000000
19  1.37750200000000    103.843164000000
20  1.37752800000000    103.843428000000
21  1.37756500000000    103.843689000000
22  1.37757000000000    103.843997000000
23  1.37758500000000    103.844248000000
24  1.37749200000000    103.844499000000
25  1.37765800000000    103.844515000000
26  1.37806100000000    103.844467000000
27  1.37853700000000    103.844386000000
28  1.37888000000000    103.844349000000
29  1.37924600000000    103.844303000000
30  1.37957500000000    103.844266000000
31  1.37966200000000    103.844190000000
32  1.37965300000000    103.844034000000
33  1.37963800000000    103.843813000000
34  1.37961600000000    103.843550000000
35  1.37959500000000    103.843313000000
36  1.37957600000000    103.843097000000
37  1.37957300000000    103.843007000000
38  1.37956800000000    103.842852000000
39  1.37953900000000    103.842602000000
40  1.37949900000000    103.842315000000
41  1.37948700000000    103.842056000000
42  1.37953800000000    103.841882000000
43  1.37967800000000    103.841755000000
44  1.37984000000000    103.841674000000
45  1.38007300000000    103.841546000000
46  1.38027900000000    103.841430000000
47  1.38044400000000    103.841354000000
48  1.38064800000000    103.841248000000
49  1.38092400000000    103.841100000000
50  1.38125600000000    103.840942000000
51  1.38178300000000    103.840682000000
52  1.38202300000000    103.840565000000
53  1.38236700000000    103.840396000000
54  1.38271600000000    103.840206000000
55  1.38302800000000    103.840017000000
56  1.38314600000000    103.840222000000
57  1.38299000000000    103.840230000000
58  1.38286700000000    103.840288000000
59  1.38265300000000    103.840398000000
60  1.38242100000000    103.840522000000
61  1.38219900000000    103.840638000000
62  1.38195100000000    103.840766000000
63  1.38162100000000    103.840934000000
64  1.38130200000000    103.841093000000
65  1.38106700000000    103.841202000000
66  1.38088500000000    103.841286000000
67  1.38069300000000    103.841372000000
68  1.38049000000000    103.841494000000
69  1.38018700000000    103.841659000000
70  1.37988900000000    103.841822000000
71  1.37966700000000    103.841963000000
72  1.37965000000000    103.842037000000
73  1.37965100000000    103.842220000000
74  1.37966300000000    103.842363000000
75  1.37968900000000    103.842641000000
76  1.37973000000000    103.843049000000
77  1.37975300000000    103.843305000000
78  1.37978200000000    103.843690000000
79  1.37982300000000    103.844135000000
80  1.37989800000000    103.844222000000
81  1.37996400000000    103.844230000000
82  1.38029900000000    103.844183000000
83  1.38080600000000    103.844091000000
84  1.38119600000000    103.843985000000
85  1.38170500000000    103.843838000000
86  1.38194900000000    103.843765000000
87  1.38220500000000    103.843683000000
88  1.38250000000000    103.843564000000
89  1.38296800000000    103.843388000000
90  1.38367400000000    103.843107000000
91  1.38379700000000    103.842994000000
92  1.38384900000000    103.842791000000
93  1.38376700000000    103.842173000000
94  1.38372500000000    103.841758000000
95  1.38358400000000    103.841212000000
96  1.38350400000000    103.840867000000
97  1.38324600000000    103.840388000000
98  1.38288200000000    103.839785000000
99  1.38265700000000    103.839436000000
100 1.38238700000000    103.838973000000
101 1.38224900000000    103.838785000000
102 1.38215800000000    103.838830000000
103 1.38197900000000    103.838933000000
104 1.38162900000000    103.839097000000
105 1.38115400000000    103.839338000000
106 1.38080900000000    103.839609000000
107 1.38036600000000    103.839756000000
108 1.37995000000000    103.839782000000
109 1.37957400000000    103.839826000000
110 1.37904400000000    103.839883000000
111 1.37844300000000    103.839807000000
112 1.37803700000000    103.839743000000
113 1.37765800000000    103.839690000000
114 1.37735600000000    103.839665000000
115 1.38310100000000    103.840134000000
116 1.38108800000000    103.841146000000
117 1.37961700000000    103.842951000000
118 1.37978200000000    103.844233000000

私のコード

M = xlsread('YCKMap.xlsx'); 
figure(),plot(M(:,2), M(:,3));

結果

http://i.stack.imgur.com/0dncY.jpg

私が欲しいもの:

欲しいもの

これらのポイントを結合することは可能ですか(55 115 56)(49 116 65)(37 117 76)(30 118 80)上の画像に示すように?

4

2 に答える 2

1

私は自分の質問に対する答えを見つけ出し、私が出したことでコミュニティに利益をもたらしたいと考えています. @Danコードによるとplot(M(:,2), M(:,3);、ポイントをプロットできますが、グラフの向きはかなりずれています。したがって、ウェイポイント機能を使用して改善します。

とにかく、新しい行を挿入したいときは、セルギャップを残してExcelデータを整理してください。わかりやすいようにエクセルデータを貼り付けておきます。

コーディング


M = xlsread('excel.xlsx');
waypoints =[M(:,2), M(:,3)];
[lttrk,lntrk] = track('rh',waypoints,'degrees');
figure(),geoshow(lttrk,lntrk,'DisplayType','line', 'color','r');

エクセルデータ


1   1.377234    103.839645
2   1.37722     103.839741
3   1.377233    103.839843
4   1.377236    103.839968
5   1.377241    103.840125
6   1.377239    103.840245
7   1.377249    103.840435
8   1.377257    103.840674
9   1.377248    103.840896
10  1.377265    103.841071
11  1.377283    103.84119
12  1.377295    103.841393
13  1.377346    103.841591
14  1.377365    103.841918
15  1.377398    103.842093
16  1.377429    103.8424
17  1.377449    103.842629
18  1.377481    103.842895
19  1.377502    103.843164
20  1.377528    103.843428
21  1.377565    103.843689
22  1.37757         103.843997
23  1.377585    103.844248
24  1.377492    103.844499
25  1.377658    103.844515
26  1.378061    103.844467
27  1.378537    103.844386
28  1.37888         103.844349
29  1.379246    103.844303
30  1.379575    103.844266
31  1.379662    103.84419
32  1.379653    103.844034
33  1.379638    103.843813
34  1.379616    103.84355
35  1.379595    103.843313
36  1.379576    103.843097
37  1.379573    103.843007
38  1.379568    103.842852
39  1.379539    103.842602
40  1.379499    103.842315
41  1.379487    103.842056
42  1.379538    103.841882
43  1.379678    103.841755
44  1.37984         103.841674
45  1.380073    103.841546
46  1.380279    103.84143
47  1.380444    103.841354
48  1.380648    103.841248
49  1.380924    103.8411
50  1.381256    103.840942
51  1.381783    103.840682
52  1.382023    103.840565
53  1.382367    103.840396
54  1.382716    103.840206
55  1.383028    103.840017

56  1.383146    103.840222
57  1.38299         103.84023
58  1.382867    103.840288
59  1.382653    103.840398
60  1.382421    103.840522
61  1.382199    103.840638
62  1.381951    103.840766
63  1.381621    103.840934
64  1.381302    103.841093
65  1.381067    103.841202
66  1.380885    103.841286
67  1.380693    103.841372
68  1.38049         103.841494
69  1.380187    103.841659
70  1.379889    103.841822
71  1.379667    103.841963
72  1.37965     103.842037
73  1.379651    103.84222
74  1.379663    103.842363
75  1.379689    103.842641
76  1.37973     103.843049
77  1.379753    103.843305
78  1.379782    103.84369
79  1.379823    103.844135
80  1.379898    103.844222
81  1.379964    103.84423
82  1.380299    103.844183
83  1.380806    103.844091
84  1.381196    103.843985
85  1.381705    103.843838
86  1.381949    103.843765
87  1.382205    103.843683
88  1.3825          103.843564
89  1.382968    103.843388
90  1.383674    103.843107
91  1.383797    103.842994
92  1.383849    103.842791
93  1.383767    103.842173
94  1.383725    103.841758
95  1.383584    103.841212
96  1.383504    103.840867
97  1.383246    103.840388
98  1.382882    103.839785
99  1.382657    103.839436
100 1.382387    103.838973
101 1.382249    103.838785
102 1.382158    103.83883
103 1.381979    103.838933
104 1.381629    103.839097
105 1.381154    103.839338
106 1.380809    103.839609
107 1.380366    103.839756
108 1.37995         103.839782
109 1.379574    103.839826
110 1.379044    103.839883
111 1.378443    103.839807
112 1.378037    103.839743
113 1.377658    103.83969
114 1.377356    103.839665
1   1.377234    103.839645

49  1.380924    103.8411
116 1.381088    103.841146
65  1.381067    103.841202

37  1.379573    103.843007
117 1.379617    103.842951
76  1.37973         103.843049

30  1.379575    103.844266
118 1.379782    103.844233
80  1.379898    103.844222
于 2012-04-23T04:48:05.857 に答える
0

行列に表示される順序とは異なる順序で Matlab の点をプロットする場合は、点が表示される順序のベクトルである列ベクトルを行列の先頭に追加します。次に、のsortrows関数を使用します。 matlab を使用して行列を再配置します。これで、プロットに適した順序になります。例えば:

M = [0 4 2; 1 17 5]';
plot(M);

ここで、正しいプロット順序が (0,1)、(2,5)、(4,17) であることがわかっているとします。入力行列 M と比較すると、正しいプロット順序は次のように指定できます。order = [1 3 2]'

したがって、正しい順序でプロットするには:

M = [order'; M'];
M = sortrows(M);
plot(M(:,2), M(:,3);

つまり、正しいプロット順序がわかっている限り、このメソッドを使用して正しいプロットを取得できます。

したがって、あなたの例では、これらのポイントをこの順序でプロットする必要があります (55 115 56) (49 116 65) (37 117 76) (30 118 80)。これが新しい順序の最初のポイントであるため、55 から開始するとします。現在、M は次のようになっています: M = [...;30 118 80;...;37 117 76;...;49 116 65;...;55 115 56;...] しかし、次のようにしたい: M = [...; 55 115 56; 56 116 65; 57 117 76; 58 118 80;...]. 問題は、この M(M(:,1) == 30,1) = 58 のように値を変更できないことです。これは、58 でインデックス付けされた 2 つのポイントに到達するためです。したがって、最初に 1 を追加する必要があります。あまりにも 58 以上のすべてのインデックス、したがって M(M(:,1) >= 58) = M(M(:,1) >= 58) + 1 そして最後に M(M(:,1) = = 30,1) = 58. 点の変化を一般化するには:

 M(M(:,1) >= newIndex) = M(M(:,1) >= newIndex) + 1;
 M(M(:,1) == oldIndex,1) = newIndex;

ポイントを変更する方法を定義するロジックがある場合は、これをループに書き込むことができます。そうでなく、それらの 4 つのポイントだけである場合は、コマンド ラインでこれを手動で実行します。

于 2012-04-19T15:17:34.627 に答える