2

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

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

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

誰かが興味を持っている場合は、コードを投稿します(終了したら)。

4

4 に答える 4

2

曲線の単純化/近似については、https://en.wikipedia.org/wiki/Ramer-Douglas-Peucker_algorithmをご覧ください。

于 2009-12-12T22:04:01.047 に答える
0

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

imagecopyresampled は imagecopyresized ではなく必要な関数です

于 2009-12-12T21:19:34.867 に答える
0

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

于 2009-12-12T21:25:53.330 に答える
0

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

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

きれいに聞こえますが。

于 2009-12-12T21:07:56.023 に答える