Hallo,
Ich habe ein Skript geschrieben, in dem ich einen Schieberegler für die Abtasttiefe an eine Kontur des Graph Builders anhängen konnte. Die Karte reagiert jedoch nicht und ändert sich nicht, wenn der Schieberegler verwendet wird.
Ich glaube, dass auf alles richtig verwiesen wird und ich keine Fehler mit dem Protokoll habe, aber nichts ändert sich, wenn ich den Schieberegler bewege.
Skript ist beigefügt.
Names Default to Here(1);
dt = Currentdatatable();
datacolumn=column(dt, "End Depth");
new window ("RFIS Contour Plot Depth Filtering",
window:gb = Graph Builder(
Size( 599, 514 ),
Show Control Panel( 0 ),
Variables(
X( :Longitude ),
Y( :Latitude ),
Color(
Transform Column( "Log[SUM TOC NORM]", Formula( Log( :SUM TOC NORM ) ) )
)
),
Elements(
Contour(
X,
Y,
Legend( 5 ),
Line( 1 ),
Boundary( 0 ),
Number of Levels( 10 ),
Alpha( 95.1827841988282 ),
Smoothness( 0.01 )
),
Points( X, Y, Legend( 6 ) )
),
Local Data Filter(
Add Filter(
columns( :Sample Code, :Area ),
Where( :Area == "AOI" ),
Display(
:Sample Code,
"Single Category Display",
Find( Set Text( "" ) )
)
)
),
SendToReport(
Dispatch(
{},
"Longitude",
ScaleBox,
{Scale( "Geodesic" ), Format( "Best", 15 ), Min( -122.777380897341 ),
Max( -122.674219621177 ), Inc( 0.025 ), Minor Ticks( 0 )}
),
Dispatch(
{},
"Latitude",
ScaleBox,
{Scale( "Geodesic" ), Format( "Fixed Dec", 15, 2 ),
Min( 45.5156964729219 ), Max( 45.6018236979199 ), Inc( 0.05 ),
Minor Ticks( 0 )}
),
Dispatch(
{},
"400",
ScaleBox,
{Legend Model(
5,
Properties(
0,
{gradient(
{Color Theme(
{"Green Yellow Red Copy", 16387, {"Green", "Yellow",
{252, 11, 11}}, {0.273504273504274, 0.5,
0.789173789173789}}
), Width( 12 )}
)},
Item ID( "Log[SUM TOC NORM]", 1 )
)
), Legend Model(
6,
Properties(
0,
{gradient(
{Color Theme(
{"Green Yellow Red Copy", 16387, {"Green", "Yellow",
{252, 11, 11}}, {0.273504273504274, 0.5,
0.789173789173789}}
), Width( 12 ), N Labels( 10 )}
)},
Item ID( "Log[SUM TOC NORM]", 1 )
),
Properties( 1, {Marker Size( 4 )}, Item ID( "Latitude", 1 ) )
)}
),
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( "RFIS Contour Plot Depth Filtering" )}
),
Dispatch(
{},
"Graph Builder",
FrameBox,
{Background Map(
Images(
"Web Map Service",
"http://wms2.mapsavvy.com/WMSService.svc/f8e454cf75bf41a882e5126809b56a45/WMSLatLon",
"Aerial"
)
), Grid Line Order( 2 ), Reference Line Order( 3 )}
),
Dispatch(
{},
"400",
LegendBox,
{Legend Position( {5, [0], 6, [-1, -1]} ), Position( {0, -1, -1} )}
)
),
),
H List Box(
Text Box("Depth"),
window:slmin = col min(datacolumn);
window:slmax = col max(data column);
window:slider1 = SliderBox(window:slmin, window:slmax, window:slmax,
scale=Matrix( {slmin,slmax} );
scale=scale`;
window:gb <<SENDTOREPORT></SENDTOREPORT>Vielen Dank
Ich stimme zu @ txnelson . Der beste Weg, um die gewünschte Änderung zu erreichen, ist die entsprechende Nachricht an die Achsenbox, nicht indem Sie versuchen, das Argument "An Bericht senden" zu dekodieren.
Das Problem dabei ist, dass "Endtiefe" weder in der Legende noch in der Achse verwendet wird. Ich brauche nur einen Schieberegler, der durch die Daten filtert. Der lokale Datenfilter verfügt nicht über einen Schieberegler, wie Sie beispielsweise bei einem Blasendiagramm sehen würden, das in einer festen Tiefe bleibt, sondern in einem Wertebereich.
Kann ich den Schieberegler im lokalen Datenfilter einfach ändern?
Hier ist ein Code, der einen Schieberegler verwendet, um die Untergrenze des lokalen Datenfilters zu bearbeiten (ich weiß nicht, ob ich den Wert ändern kann, damit ich ihn lösche und neu erstelle, aber er scheint reibungslos zu sein - zumindest für kleine Datenmengen).
names default to here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
minval = min(:height<<GETVALUES>= 51 & :height <= 70 ) ),
Close Outline(1)
);
// add a slider to control the minimum value of the data filter
vlb << append(
SliderBox(minval,maxval,::var,
df << delete(:height);
df <<ADDFILTER>= ::var ) )
)
)</ADDFILTER></GETVALUES>
Wenn Sie sowohl die Unter- als auch die Obergrenze des Filters steuern möchten, können Sie eine RangeSliderBox verwenden.
(ps: Dies ist ein leicht schlampiger Code - wenn auf dem Schieberegler das ausgeführt wird df Variable ist nicht mehr im Geltungsbereich; Der Code funktioniert, aber in der Praxis würde ich die Variable in einen Namespace einfügen und einen Verweis auf den Namespace im Slider-Skript rekonstruieren.