ST_Scale — Skalar en geometri med givna faktorer.
geometry ST_Scale(
geometry geomA, float XFactor, float YFactor, float ZFactor)
;
geometry ST_Scale(
geometry geomA, float XFactor, float YFactor)
;
geometry ST_Scale(
geometry geom, geometry factor)
;
geometry ST_Scale(
geometry geom, geometry factor, geometry origin)
;
Skalar geometrin till en ny storlek genom att multiplicera ordinaterna med motsvarande faktorparametrar.
Den version som tar en geometri som faktorparameter
gör det möjligt att skicka en 2d-, 3dm-, 3dz- eller 4d-punkt för att ställa in skalningsfaktorn för alla dimensioner som stöds. Saknade dimensioner i faktorpunkten
motsvarar ingen skalning av motsvarande dimension.
Varianten med tre geometrier gör det möjligt att ange ett "falskt ursprung" för skalningen. Detta möjliggör "skalning på plats", t.ex. genom att geometrins centroid används som falskt ursprung. Utan ett falskt ursprung sker skalningen i förhållande till det faktiska ursprunget, så alla koordinater multipliceras bara med skalfaktorn.
![]() |
|
Före 1.3.4 kraschade den här funktionen om den användes med geometrier som innehåller CURVES. Detta är åtgärdat i 1.3.4+ |
Tillgänglighet: 1.1.0.
Förbättrad: 2.0.0 stöd för polyhedrala ytor, trianglar och TIN infördes.
Förbättrad: 2.2.0 stöd för skalning av alla dimensioner(faktorparameter)
infördes.
Förbättrad: 2.5.0 stöd för skalning i förhållande till ett lokalt ursprung (origin
-parametern) infördes.
Denna funktion stöder polyedriska ytor.
Denna funktion stöder 3d och kommer inte att tappa z-index.
Denna metod stöder cirkulära strängar och kurvor.
Denna funktion stöder trianglar och triangulerade oregelbundna nätverksytor (TIN).
Denna funktion stöder M-koordinater.
--Version 1: scale X, Y, Z SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3, 1 1 1)'), 0.5, 0.75, 0.8)); st_asewkt -------------------------------------- LINESTRING(0.5 1.5 2.4,0.5 0.75 0.8) --Version 2: Scale X Y SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3, 1 1 1)'), 0.5, 0.75)); st_asewkt ---------------------------------- LINESTRING(0.5 1.5 3,0.5 0.75 1) --Version 3: Scale X Y Z M SELECT ST_AsEWKT(ST_Scale(ST_GeomFromEWKT('LINESTRING(1 2 3 4, 1 1 1 1)'), ST_MakePoint(0.5, 0.75, 2, -1))); st_asewkt ---------------------------------------- LINESTRING(0.5 1.5 6 -4,0.5 0.75 2 -1) --Version 4: Scale X Y using false origin SELECT ST_AsText(ST_Scale('LINESTRING(1 1, 2 2)', 'POINT(2 2)', 'POINT(1 1)'::geometry)); st_astext --------------------- LINESTRING(1 1,3 3)