gi-nx / updateRawSections
ts
function updateRawSections(features: {
geometry?: | {
coordinates: [number, number];
type: "Point";
}
| {
coordinates: [number, number][];
type: "MultiPoint";
}
| {
coordinates: [number, number][];
type: "LineString";
}
| {
coordinates: [number, number][][];
type: "MultiLineString";
}
| {
coordinates: [number, number][][];
type: "Polygon";
}
| {
coordinates: [number, number][][][];
type: "MultiPolygon";
};
properties: {
id: string;
} & Partial<{
[key: string]: any;
angleOfRepose?: number;
appId?: string;
arrowEnd?: boolean;
arrowEndLength?: number;
arrowEndYawn?: number;
arrowStart?: boolean;
arrowStartLength?: number;
arrowStartYawn?: number;
baseHeight?: number;
bevel?: number;
bevelSegments?: number;
blockBasePoint?: boolean;
blockId?: string;
blockPropagation?: Record<string, "pass" | "force" | "stop">;
borderColor?: string;
borderRadius?: number;
borderStyle?: | "solid"
| "dotted"
| "dashed"
| "double"
| "groove"
| "ridge"
| "inset"
| "outset";
borderWidth?: number;
boxShadow?: number;
buildingID?: string;
childFeatures?: Feature<
| LineString
| Polygon, {
[name: string]: any;
}>[];
circleText?: boolean;
color?: string;
content?: string;
cornerRadius?: number;
corners?: "fillet" | "chamfer";
cutAndFill?: boolean;
cutAndFillOffset?: number;
dendrogram?: DendroRoot;
depth?: number;
doesStack?: boolean;
dwellingCount?: NumberKeyValueList;
dwellingCountPerLevel?: boolean;
dwellingMix?: NumberKeyValueList;
dwellingParkingRequired?: NumberKeyValueList;
dwellingPrice?: NumberKeyValueList;
dwellingResidents?: NumberKeyValueList;
dwellingSize?: NumberKeyValueList;
efficiency?: number;
elevationDatum?: number;
fillOpacity?: number;
floorToFloor?: number;
flow?: RawSectionFlowProp;
fromLayer?: string;
gltf?: string;
groupID?: string;
guidelineOffset?: number;
height?: number;
hideBackground?: boolean;
hideFloors?: boolean;
hideVerticals?: boolean;
id: string;
imageUrl?: string;
isDraped?: boolean;
label?: string;
labelColor?: string;
layerId?: string;
levels?: number;
loft?: boolean;
lotNumber?: string;
marker?: Marker;
markerAnchor?: | {
label: "Right";
value: "bottom left";
}
| {
label: "Left";
value: "bottom right";
}
| {
label: "Center";
value: "bottom";
};
markerIcon?: string;
maxWidth?: number;
mirror?: boolean;
noFacade?: boolean;
offset?: number;
offsetSide?: "right" | "left" | "both";
padding?: number;
parkingProvided?: number;
parkingRequired?: number;
pavementWidth?: number;
popup?: Record<string, any>;
popupBorderColor?: string;
popupBorderRadius?: number;
popupBorderWidth?: number;
popupColor?: string;
popupContent?: string;
popupHeight?: number;
popupImg?: string;
popupPadding?: number;
popupWidth?: number;
primitive?: string;
primitiveParams?: Record<string, any>;
projectId: string;
public: true;
radius?: number;
roadWidth?: number;
rotation?: number;
scale?: number;
scenario?: string[];
sellEfficiency?: number;
shiny?: boolean;
slabThickness?: number;
sourceFeatureProperties?: Record<string, any>;
stackOrder?: number;
stickColor?: string;
stickHeight?: number;
stickWidth?: number;
stroke?: string;
strokeDasharray?: number[];
strokeLinecap?: "butt" | "round" | "square";
strokeLinejoin?: "bevel" | "round" | "miter";
strokeOpacity?: number;
strokeWidth?: number;
textColor?: string;
textSize?: number;
topThickness?: number;
type?: SectionType;
usage?: string;
visitorParkingRequired?: number;
width?: number;
}>;
}[]): void;Same as updateRawSection but for many features. Partial updates are supported for each feature, but each must have properties.id to identify which section to update. Pass null for a property value to delete it.
Parameters
| Parameter | Type |
|---|---|
features | { geometry?: | { coordinates: [number, number]; type: "Point"; } | { coordinates: [number, number][]; type: "MultiPoint"; } | { coordinates: [number, number][]; type: "LineString"; } | { coordinates: [number, number][][]; type: "MultiLineString"; } | { coordinates: [number, number][][]; type: "Polygon"; } | { coordinates: [number, number][][][]; type: "MultiPolygon"; }; properties: { id: string; } & Partial<{ [key: string]: any; angleOfRepose?: number; appId?: string; arrowEnd?: boolean; arrowEndLength?: number; arrowEndYawn?: number; arrowStart?: boolean; arrowStartLength?: number; arrowStartYawn?: number; baseHeight?: number; bevel?: number; bevelSegments?: number; blockBasePoint?: boolean; blockId?: string; blockPropagation?: Record<string, "pass" | "force" | "stop">; borderColor?: string; borderRadius?: number; borderStyle?: | "solid" | "dotted" | "dashed" | "double" | "groove" | "ridge" | "inset" | "outset"; borderWidth?: number; boxShadow?: number; buildingID?: string; childFeatures?: Feature< | LineString | Polygon, { [name: string]: any; }>[]; circleText?: boolean; color?: string; content?: string; cornerRadius?: number; corners?: "fillet" | "chamfer"; cutAndFill?: boolean; cutAndFillOffset?: number; dendrogram?: DendroRoot; depth?: number; doesStack?: boolean; dwellingCount?: NumberKeyValueList; dwellingCountPerLevel?: boolean; dwellingMix?: NumberKeyValueList; dwellingParkingRequired?: NumberKeyValueList; dwellingPrice?: NumberKeyValueList; dwellingResidents?: NumberKeyValueList; dwellingSize?: NumberKeyValueList; efficiency?: number; elevationDatum?: number; fillOpacity?: number; floorToFloor?: number; flow?: RawSectionFlowProp; fromLayer?: string; gltf?: string; groupID?: string; guidelineOffset?: number; height?: number; hideBackground?: boolean; hideFloors?: boolean; hideVerticals?: boolean; id: string; imageUrl?: string; isDraped?: boolean; label?: string; labelColor?: string; layerId?: string; levels?: number; loft?: boolean; lotNumber?: string; marker?: Marker; markerAnchor?: | { label: "Right"; value: "bottom left"; } | { label: "Left"; value: "bottom right"; } | { label: "Center"; value: "bottom"; }; markerIcon?: string; maxWidth?: number; mirror?: boolean; noFacade?: boolean; offset?: number; offsetSide?: "right" | "left" | "both"; padding?: number; parkingProvided?: number; parkingRequired?: number; pavementWidth?: number; popup?: Record<string, any>; popupBorderColor?: string; popupBorderRadius?: number; popupBorderWidth?: number; popupColor?: string; popupContent?: string; popupHeight?: number; popupImg?: string; popupPadding?: number; popupWidth?: number; primitive?: string; primitiveParams?: Record<string, any>; projectId: string; public: true; radius?: number; roadWidth?: number; rotation?: number; scale?: number; scenario?: string[]; sellEfficiency?: number; shiny?: boolean; slabThickness?: number; sourceFeatureProperties?: Record<string, any>; stackOrder?: number; stickColor?: string; stickHeight?: number; stickWidth?: number; stroke?: string; strokeDasharray?: number[]; strokeLinecap?: "butt" | "round" | "square"; strokeLinejoin?: "bevel" | "round" | "miter"; strokeOpacity?: number; strokeWidth?: number; textColor?: string; textSize?: number; topThickness?: number; type?: SectionType; usage?: string; visitorParkingRequired?: number; width?: number; }>; }[] |
Returns
void
Examples
typescript
// Set height to 30 on multiple sections
const sections = await rpc.invoke("getRawSections");
await rpc.invoke("updateRawSections", [
sections.map(s => ({
properties: { id: s.properties.id, height: 30 }
}))
]);typescript
// Shift all selected features 0.001° east
const selected = await rpc.invoke("getSelectedFeatures");
await rpc.invoke("updateRawSections", [
selected.features.map(f => ({
geometry: {
...f.geometry,
coordinates: f.geometry.coordinates.map(ring =>
ring.map(([lng, lat]) => [lng + 0.001, lat])
)
},
properties: { id: f.properties.id }
}))
]);