質問

すべての国の国境の形状データとそれを処理するクラスを見つけ、経度と緯度を画像上のピクセル位置に変換し、次を使用して国を描​​画するスクリプトを作成しました。 imagefilledpolygon そして imageline. 。以下を除いて、すべてがうまく機能しています。

1) 変更できる $scale 変数があります。$scale=1 では、画像は 360x180 ピクセル (1 ピクセル = 1 度の緯度/経度) です。理想的には、最終的に必要な画像は約 $scale = 2 (720x360) ですが、1 ピクセルの太さの境界線が非常に太く見えます。そこで、$scale=10 でマップを生成し、生成された画像のサイズを変更するのが最善の解決策だと考えました。問題は imagecopyresized サイズ変更時にアンチエイリアスが適用されず、非常にギザギザの画像が残ってしまいます。サイズ変更とアンチエイリアスを行うにはどうすればよいですか?

2) 国のポリゴンを生成するためのポイントの数は膨大です。計画では、同じコードを使用して HTML イメージマップを作成し、国をリンクにする予定です。ただし、現時点ではイメージマップのポイントが多すぎるのではないかと心配しています (ファイル サイズが大きすぎる可能性があります)。私の最初のアプローチは、x 個のポイントをスキップすることで、ある程度の成功につながりました。10 ポイントのうち 1 ポイントを処理すれば、ほとんどの場合、許容可能な結果が得られます。理想的にはもっと少ないと思います...40 分の 1 を試してみたところ、いくつかの国境が重なっており、国の間にいくつかの隙間があることがわかりました (ただし、混雑した海岸線の一部はより良く見えました)。適切なレベルの精度を維持しながらポイント数を減らす賢明な方法は何ですか?

興味のある人がいたら、コードを投稿します(完成したら)。

役に立ちましたか?

解決

曲線の単純化/近似については、以下を参照してください。 http://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithm

他のヒント

したがって、これに対するコードはありません。2 番目の問題に対する単なるアイデアです。地図を生成するクラスは X/Y 座標を取得して、どの国にいるのかを判断できますか?

可能であれば、イメージ マップの使用を避け、JavaScript を使用してクリックの X/Y 座標を決定することもできます。これを場所に解決し、通常どおりに操作します。もちろん、これの欠点は、JavaScript がオフになっていると機能しないことです。

きれいに聞こえますが。

最初のものを解決しました:

imagecopyresampled は、imagecopyresize ではなく必要な関数です

問題の 2 番目の部分では、10 番目ごとのポイントを使用するのではなく、マップに何かを追加するポイントのみを使用する必要があります。最後にレンダリングされたポイントから一定のしきい値距離を超えている場合にのみ、ポイントの使用を試みることができます。つまり、密集した領域では使用するポイントの数は少なくなりますが、間隔が離れている場合は必要なだけ多くのポイントを使用することになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top