(ใช้ PostgreSQL 9.1 โดยไม่ต้องติดตั้ง GIS)
สมมติว่าฉันมีกล่อง (ซึ่งควรเป็นสี่เหลี่ยมจัตุรัสเสมอ):
> SELECT box '((0, 0), (1,1))'
"(1,1),(0,0)"
ฉันสามารถได้วงกลมที่พอดีกับสี่เหลี่ยมจัตุรัส:
> SELECT circle (box '((0, 0), (1,1))')
"<(0.5,0.5),0.707106781186548>"
และถ้ายุ่งนิดหน่อย ฉันก็จะได้วงกลมที่ใหญ่ขึ้น:
> SELECT circle(center(circle(box '((0, 0), (1,1))')), radius(circle(box '((0, 0), (1,1))')) * 2)
"<(0.5,0.5),1.4142135623731>"
แต่การทำเช่นนั้นเป็นคำสั่งที่เตรียมไว้หมายถึงการผ่านช่องสี่เหลี่ยมสองครั้ง:
"SELECT circle(center(circle(?)), radius(circle(?)) * 2)
ซึ่งไม่ใช่ตัวทำลายข้อตกลง แต่ฉันรู้สึกว่าควรมีวิธีที่ 'ดีกว่า' ในการทำสิ่งนี้
มีวิธีที่ง่ายกว่า/ดีกว่าในการปรับขนาดวงกลมหรือไม่ โดยเฉพาะอย่างยิ่ง ฉันต้องการวงกลมที่มีจุดศูนย์กลางอยู่ที่กึ่งกลางกล่อง และมีรัศมีเท่ากับครึ่งหนึ่งของความยาวเส้นทแยงมุมของกล่อง
(หากช่วยได้ ฉันจะใช้โอเปอเรเตอร์ "Contained in or on" ('‹@') เพื่อรับชุดของคะแนนภายในพื้นที่)
ขอบคุณ.