直線のスムージング

 GIS上で曲線を描いたつもりでいても、頂点(ノード)の数が足りない場合、作図結果は

 この様に、曲線と言うよりは「折れ線」になってしまいます。

 この折れ線を滑らかな曲線にしたい場合は、大きく
・再度、作図する
・既存の頂点を活用する
という2つの方法がありますが、今回は後者について説明します。

 既存の頂点から曲線を生成する方法は数種類ありますが、一般的に使用されているのは「ベジエ」ですね。イラストレーター等のベクトル系描画ソフトウェアでは、これが標準となっています。
 確かに、美しくて滑らかな曲線を描けるのですが、弱点とも言える部分もあります。仮に既存の頂点が10個あるとして、この10個から機械的に生成したベジエ曲線は、元の10個全ての上を通りません。必ず、ズレが発生します。

 GISに必要なのは、見た目の美しさよりも「正確さ」です。頂点の位置に意味があり、「生成したベジエ曲線は、概ね元の頂点に近い場所を通る」では精度が落ちてしまいます。
 今回の課題については、「スプライン」が最適でしょう。

 スプラインの考え方は、簡単に言うと
・柔軟なプラスティックの棒を
・頂点に合わせて曲げていく
というものです。棒は折れるのではなくて「しなって」いきます。また、特定の一箇所にしなりが集中するのではなく、全体的に「できるだけ、むりなくしなる」という特徴があります。

 スプライン曲線の生成手順は、

 既存の頂点の間に多数の新しい頂点を作り、次に

 新しい頂点を直線で結んでいきます。
 その意味で、スプライン曲線は正確には曲線ではありません。「滑らかな折れ線」となります。もっとも、頂点数を十分に増やすと、概ね曲線と言えるものになるでしょう。

 ArcGISには「スムージング」という機能があり、「ベジエ」「スプライン」の使い分けが可能です。
(言葉の意味合いは、逆になっています)
 残念な事に、この機能は最安価なBasicライセンスでは使用できません。

 QGIS(フリーソフトウェア)には、スムージング機能が実装されています。
 処理結果は

 です。仕組みとしてはベジエでしょう。