Hallo,
Ich habe ein Skript geschrieben, in dem ich einen Schieberegler für die Sampling-Tiefe an eine Graph-Builder-Kontur 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 im Protokoll habe, aber wenn ich den Schieberegler bewege, ändert sich nichts.
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>Danke
Hier ist ein Code, der einen Schieberegler verwendet, um die untere Grenze des lokalen Datenfilters zu manipulieren (ich weiß nicht, ob ich den Wert ändern kann, also lösche ich ihn und erstelle ihn neu, 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: Das ist ein etwas schlampiger Code – wenn die Slider-Box ausgeführt wird df Variable ist nicht mehr im Gültigkeitsbereich; Der Code funktioniert, aber in der Praxis würde ich die Variable in einen Namespace einfügen und im Slider-Skript einen Verweis auf den Namespace rekonstruieren.
Das Problem dabei ist, dass „Endtiefe“ weder in der Legende noch in der Achse verwendet wird. Ich brauche nur einen Schieberegler, der die Daten filtert. Der lokale Datenfilter verfügt nicht über einen Schieberegler, wie Sie ihn beispielsweise bei einem Blasendiagramm sehen würden, der eine feste Tiefe beibehält, sondern über einen Schieberegler, der einen Wertebereich darstellt.
Kann ich einfach den Schieberegler im lokalen Datenfilter ändern?