公兴镇地处剑阁东南端,东经105°31′30″北纬31°5′,东与圈龙乡、香沉镇接壤,南与涂山乡相接,西与吼狮乡相邻,北与碑垭乡毗邻,距新县城108公里,剑南路穿境而过约7公里。境内平均海拔620米,最高海拔750米,最低海拔492米。全镇总幅员面积34.38平方公里,东西宽约4公里,南北长约8.6公里。总耕地面积10200亩,其中田4378亩,地5822亩,其中中低产田地3000亩。水域面积2850亩,园地10700亩,退耕还林2158亩,淹没面积300亩,林地25362亩,森林覆盖率49%。
公兴镇地处剑阁南部低山槽坝深丘地区,属于山高、沟壑交错的地形结构。境内属亚热带湿润性气候区,四级分明,大陆性季风气候明显,气候温和,光照充足。年平均温度16.5℃,境内最高温度38℃,最低温度-2℃,全年无霜期276天,无极高、低气温危害,年日照数约1339小时,年降雨量1086毫米。境内主导风向为西北风,主要自然灾害还是旱灾,一年四季均可发生,特别是夏旱尤为突出。