ArcGIS Desktopのマップに実際に表示される凡例項目のみを表示しますか?


14

ArcGIS Desktopを使用して、凡例に、マップに表示されているサブアイテムのみを表示する方法はありますか?


凡例をグラフィックに変換してみましたか?グラフィックに変換した後、凡例の不要なアイテムを手動で削除できます。それがお役に立てば幸いです。ありがとう。
ラージ

1
@Raj-ああ、いや、地図を維持するのが苦痛になるとは考えていません
-dassouki

1
リンクされた質問は、回答された別の質問です。したがって、問題を詳細に説明する新しい質問をしてください。
MathiasWestin

1
古い質問にはarcgis 9.3というタグが付けられているため、ArcGIS 10の新しい質問とタグ付けは問題ありません。また、リンクされた質問は回答であり、凡例リミッターのトラブルシューティング質問を求めています。
ジェイカミンズ

また、質問のトラブルシューティングを行うには時間がかかる可能性があるため、質問本体を新しい情報で整理して、追跡しやすくするようにしてください。または、他のユーザーがそれを見て、次の質問に進みます。
ジェイカミンズ

回答:


9

レジェンドリミッター

Legend Limiterは、「一意の値カテゴリ」を使用してシンボルを定義するレイヤーでのみ機能します。このスタイルの凡例は、[レイヤープロパティ]ダイアログの[シンボル]タブで設定できます。Legend Limiterは、単一のシンボルシンボルで設定されたレイヤーのシンボルを制限しません。

http://arcscripts.esri.com/details.asp?dbid=16097


それは私が必要とするものに最も近い、本質的に、私はすべてのシンボルを一意の値に変換する必要があります
-dassouki

@ Mapperz-ArcGIS 10の修正があります:forums.arcgis.com/threads/24968-Legend-Limiter-in-Arc-10
Dano

@ Mapperz(またはだれでも)-上記のリンクでLegend Limiterに必要なファイルをダウンロードしました。インストールしようとしたときに、Googleでエラーメッセージを受け取りました。このアドオンをArcGIS 10とWindows 7の両方に対応させるパッチが存在しないという印象を受けます。このスレッドで、このトピックに関連する新しい質問を開始する必要がありますか?または....両方のパラメーター(Arc 10とWindows 7)を満たすパッチを知っている人は誰
Dano

3
Windows 7でのWindows compabilityモードで実行します
Mapperz

@ Mapperz-この回答を投稿して、回答として選択できるようにしてください。この問題に関する私の質問は次のとおり
ダノ

11

このために追加のArcPyを記述する必要はありません。単純に使うダイナミック伝説あなたのマップをオーサリングしているとき(のArcGIS 10.1で追加されました)。

[マップ範囲オプション]を使用すると、適格な凡例アイテムが現在のマップ範囲とどのように相互作用するかを制御できます。[現在のマップ範囲に表示されるクラスのみを表示する]チェックボックスがオンの場合、凡例アイテムクラスは、そのクラスのフィーチャが現在の範囲にある場合にのみ凡例に表示されます。その凡例アイテムのフィーチャが現在の範囲にない場合、アイテム全体が凡例から削除されます。


4

マップビューで、凡例を右クリックして[プロパティ]ウィンドウを開き、[アイテム]タブをクリックします。[マップ範囲オプション]で、[現在のマップ範囲に表示されるクラスのみを表示する]を選択します。

マップ内を移動するか、レイヤー内のクラスのオン/オフを切り替えると、更新されます。



チェックボックスが非表示になっている場所について具体的にご連絡いただきありがとうございます!
JMers

1

私はこのコードが役立つと思う:

import arcpy
import arcpy.mapping
import os
import sys
from arcpy import env
import string


env.workspace = r"C:\Project"
for mxdname in arcpy.ListFiles("*.mxd"):
    print mxdname
    mxd = arcpy.mapping.MapDocument(r"C:\Project\\" + mxdname)
    legend = arcpy.mapping.ListLayoutElements(mxd,"LEGEND_ELEMENT")[0]
    for lyr in legend.listLegendItemLayers():
        legend.updateItem(lyr, use_visible_extent = True)
        print 'updateItem'    
    mxd.save()
del mxd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.